【摘要】介紹了hibernate技術(shù)的原理與特性,以及在品種數(shù)據(jù)庫中的設(shè)計(jì)與應(yīng)用,展示了hibernate技術(shù)的優(yōu)點(diǎn),提出了品種對象的邏輯運(yùn)算假設(shè)。
【關(guān)鍵詞】Hibernate;品種數(shù)據(jù)庫;對象
Abstract:Introduces the principle and characteristics of Hibernate technology, as well as the design and application of the seed database, display the advantages of Hibernate technology, the seed of object logic hypothesis.
1、引言
近年來,伴隨著生物信息技術(shù)的研究開展以及品種數(shù)字化管理需求的上升,品種數(shù)據(jù)庫的研究與管理越來越顯得重要,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫對于表現(xiàn)相對獨(dú)立的品種表現(xiàn)尚可,但是對于表達(dá)具有遺傳、繼承、多態(tài)(生物多樣性)、突變等特性的種子特征則顯得無能為力。而最近在java技術(shù)領(lǐng)域異軍突起的hibernate技術(shù)則很完美的解決了這一問題,它的“面向?qū)ο蟆奔夹g(shù)特征可以對種子品種的上述生物學(xué)特性進(jìn)行表達(dá),并可以進(jìn)行抽象的數(shù)據(jù)邏輯操作。
2、hibernate技術(shù)的基本原理與品種的數(shù)字表達(dá)
2.1hibernate的基本原理
Hibernate是一個輕量級的對象映射框架,它主要技術(shù)特點(diǎn)就是把數(shù)據(jù)庫的內(nèi)容對象化,使得每一條記錄都對應(yīng)一個對象的實(shí)例,而數(shù)據(jù)一旦變成了對象的實(shí)例,就自然而然的具備了對象的特征,即繼承、多態(tài)、封裝等。對于種子數(shù)據(jù)的操作自然就變成了”面向?qū)ο蟆钡牟僮?。作為?shù)據(jù)對象的種子,具有狀態(tài),即對象的數(shù)據(jù)值。對象還有操作,就是對于對象本身數(shù)據(jù)值的操作。這樣科研人員就可以按照對自然事物的認(rèn)知習(xí)慣來對數(shù)據(jù)進(jìn)行操作,而不是按照機(jī)器的思維去研究自然事物。利用hibernate框架映射后臺數(shù)據(jù)處理類,把較為復(fù)雜的數(shù)據(jù)庫操作都封裝在DAO(data access object)中,由DAO提供一些數(shù)據(jù)訪問接口,那么程序員只要調(diào)用這些接口,就實(shí)現(xiàn)了原本需要復(fù)雜的Structured Query Language(結(jié)構(gòu)化查詢語言)才能完成的功能。
2.2品種的數(shù)字表達(dá)
種子品種具有各種各樣的性狀,以水稻為例,以下為可用浮點(diǎn)數(shù)表示性狀參數(shù),生育日數(shù)、活動積溫、株高、穗長等;以邏輯數(shù)據(jù)類型表示的是否抗倒伏特性;字符串類型的數(shù)據(jù)如品種名稱、配套栽培技術(shù)、母本等等。傳統(tǒng)的數(shù)據(jù)庫記錄方式只是將數(shù)據(jù)直接存儲到數(shù)據(jù)庫中供程序調(diào)用,如下所示:
(注:以上數(shù)據(jù)僅供舉例,具體數(shù)據(jù)可能有差異)
但是,經(jīng)過hibernate框架的映射處理,這些數(shù)據(jù)將會被映射為數(shù)據(jù)對象,由靜態(tài)數(shù)據(jù)變成具有多種狀態(tài)屬性及操作的動態(tài)數(shù)據(jù)。
上述數(shù)據(jù)表格將會被映射成class rice。每個字段都將對應(yīng)class中的屬性,每個相對應(yīng)的屬性都有g(shù)et和set方法來獲得或者修改對象的屬性值。這樣,水稻就可以抽象為一個class rice,這個抽象的class具有所有水稻的一般特性,那么任何一個水稻品種都是繼承于rice這個抽象類,并且變異或者進(jìn)化出新的特性。
3、基于hibernate技術(shù)的品種數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)
3.1三層結(jié)構(gòu)設(shè)計(jì)
品種數(shù)據(jù)庫按照其功能劃分為表示層,業(yè)務(wù)邏輯層和數(shù)據(jù)層。表示層負(fù)責(zé)與用戶進(jìn)行交互,負(fù)責(zé)將數(shù)據(jù)傳輸?shù)綐I(yè)務(wù)邏輯層,并且將服務(wù)器處理完的數(shù)據(jù)回饋到用戶。業(yè)務(wù)邏輯層負(fù)責(zé)表達(dá)程序的主題思想,是核心部分,它負(fù)責(zé)將用戶數(shù)據(jù)處理后提交到數(shù)據(jù)層,或者將數(shù)據(jù)從數(shù)據(jù)庫中提出發(fā)送到表示層。數(shù)據(jù)層負(fù)責(zé)與數(shù)據(jù)庫打交道,所有與數(shù)據(jù)庫相關(guān)的操作都封裝在這一層,hibernate主要位于數(shù)據(jù)層與邏輯層之間,我們利用hibernate創(chuàng)建的DAO(數(shù)據(jù)訪問對象)就位于數(shù)據(jù)層,里面包含對品種數(shù)據(jù)庫的操作,例如增加、刪除、修改、查詢等等。
3.2品種數(shù)據(jù)庫應(yīng)用的關(guān)鍵步驟
3.2.1創(chuàng)建hibernate的配置文件和映射文件
這兩個文件可以由集成開發(fā)環(huán)境自動生成,這里就簡單的說一下它們的作用,Hibernate配置文件主要負(fù)責(zé)與數(shù)據(jù)庫進(jìn)行連接,其中包含數(shù)據(jù)庫所在服務(wù)器的ip端口,用戶名和密碼,以及應(yīng)用的數(shù)據(jù)庫方言等等,一般以xml后綴形式存在。映射文件主要的作用就是將數(shù)據(jù)庫中的表與實(shí)體類相對應(yīng),例如水稻表就對應(yīng)水稻的class,玉米表就對應(yīng)玉米的class,該文件一般以hbm后綴存在。
3.2.2獲得數(shù)據(jù)工廠并存儲品種數(shù)據(jù)
sessionFactory=new AnnotationConfiguration().configure().buildSessionFactory();
public static SessionFactory getSessionFactory() {return sessionFactory;}
Session session=HibernateUtil.getSessionFactory().openSession();
tx=session.beginTransaction();
session.save(pinzhong);
tx.commit();
}
3.2.3以dao(數(shù)據(jù)訪問對象)的方式提供數(shù)據(jù)接口
為了對三層結(jié)構(gòu)中的業(yè)務(wù)邏輯層提供數(shù)據(jù),Hibernate在品種數(shù)據(jù)訪問對象中提供創(chuàng)建和存儲接口、品種對象的修改和刪除接口、按照品種對象的唯一id查詢并獲得品種對象的接口、獲取全部品種對象的接口。這里面所說的品種對象,就是由在3.2.1中提到的映射文件生成的實(shí)體類對象、它們對應(yīng)著數(shù)據(jù)庫中記載著的品種記錄,品種的id用來保證每條記錄的唯一性。
3.3設(shè)計(jì)針對品種遺傳特性的邏輯運(yùn)算
由于數(shù)據(jù)經(jīng)由hibernate映射成為了對象,對象具有屬性和操作,那么在class的設(shè)計(jì)中就可以設(shè)計(jì)加載雜交操作,還是以水稻為例,水稻a,b,c都繼承于水稻這個class,水稻c=水稻b.add(水稻a),也就是說水稻c的父本和母本分別是水稻b和水稻c,如果我們在數(shù)據(jù)庫中有父母本顯性基因和隱性基因的記錄,那么對這兩種基因進(jìn)行“邏輯與運(yùn)算”,我們就可以根據(jù)程序生成指定父母本雜交后代的大致估算結(jié)果。
4、結(jié)束語
將hibernate框架技術(shù)應(yīng)用到種子品種數(shù)據(jù)庫中,對于由眾多參數(shù)構(gòu)成的具有繼承變異等生物特性的品種數(shù)據(jù),實(shí)例證明,具有一定的優(yōu)勢和可行性。將“品種數(shù)據(jù)表”映射到“品種實(shí)體類”使其具有“類對象”功能,對于今后的種子品種研究工作是一個很好的鋪墊,具有一定的推廣意義。
參考文獻(xiàn)
[1]宋漢增,沈琳.利用Hibernate對象持久化服務(wù)簡化Java數(shù)據(jù)庫訪問[J].計(jì)算機(jī)應(yīng)用,2003年12期
[2]朱慶偉,吳宇紅.一種對象/關(guān)系映射框架的分析和應(yīng)用[J].電子科技,2004年01期
[3]李曉鋒,許時雍.水稻品種資源對白葉枯病抗性研究初報(bào)[J].安徽農(nóng)業(yè)科學(xué),1980年02期
[4]祝文軍.基于Struts框架和Hibernate技術(shù)的Web應(yīng)用的設(shè)計(jì)與實(shí)現(xiàn)[D].大連理工大學(xué),2006年