收稿日期:2007-12-05;修回日期:2008-03-24 基金項目:國家重點基礎研究發展計劃資助項目(2006CB504702)
作者簡介:杜建強(1968-),男,江西南昌人,教授,主要研究方向為軟件工程、醫藥信息學(jianqiang_du@163.com);廖春華(1972-),男,講師,碩士,主要研究方向為數據庫信息系統;李智彪(1982-),男,助教,碩士,主要研究方向為數據庫信息系統;彭琳(1975-),女,講師,碩士,主要研究方向為數據庫信息系統.
(江西中醫學院 計算機學院 南昌 330004)
摘要:中藥藥性理論已成為中藥現代化發展中的重大科學問題之一。以典型寒熱藥為研究對象、以現代實驗技術和方法為手段開展中藥四氣理論內涵規律研究,是中藥藥性研究的主要方向。設計并實現了基于J2EE的中藥藥性實驗數據共享平臺,介紹了系統的總體結構、功能模塊和數據庫設計,并舉例說明了如何利用Hibernate技術實現持久層開發。實際運行效果表明,本項目能夠適用于各種中藥實驗數據的管理,幫助中藥科研人員更好地管理、分析和利用實驗數據。
關鍵詞:J2EE;中藥藥性;實驗數據管理;Hibernate
中圖分類號:TP311.52
文獻標志碼:A
文章編號:1001-3695(2008)10-3195-03
Research of traditional Chinese drug experimentaldata sharing platform based on J2EE
DU Jian-qiang LIAO Chun-hua LI Zhi-biao PENG Lin
(School of Computer Science Jiangxi University of Traditional Chinese Medicine Nanchang 330004 China)
Abstract:The theory of traditional Chinese drug property has become one of vital scientific questions. It is the main direction to do research about intense and regulation of traditional Chinese drug four nature theory taking typical cold and hot drugs as research object and taking modern experimental skills and technology as research method.This paper designed and implemented traditional Chinese drug experimental data sharing platform based on J2EE. It introduced for the general architecture,-model function and database design.It presented with example how to use Hibernate technology to realize permanent layer development.The practical effect indicates that this platform can be suitable for each kind of traditional Chinese drug experimental data management and help the researchers of traditional Chinese drug to better manage,analyze and utilize experimental data.
Key words:J2EE; traditional Chinese drug property; experimental data management; Hibernate
0引言
中藥藥性理論是中藥理論的核心,中藥藥性理論已成為中藥現代化發展中的重大科學問題之一。中藥四氣理論又在中藥藥性理論中占有重要的地位。中藥的四氣是歷代醫家運用陰陽理論,根據中藥作用于機體的反應或自然界氣候等因素對植物可能產生的影響進行邏輯推理歸納而形成的。由于他們所處的歷史年代、實踐經驗以及自身認識水平的差異,導致對中藥四氣的認識各不相同,從而對中藥四氣屬性的認識也各不相同。對于中藥四氣客觀而有效的判別標準和方法的現代研究不夠系統完整,導致對中藥四氣理論的現代認識停留在不同領域的不同層面。
國家“973”課題中藥四氣生物效應評價模式研究以四味寒藥(黃連、黃柏、黃芩、梔子)、四味熱藥(附子、干姜、肉桂、吳茱萸)、四味溫藥(陳皮、川芎、黃芪、當歸)及四味涼藥(薄荷、葛根、大薊、女貞子)為研究對象,開展中藥四氣理論內涵規律研究[1]。課題組分成若干研究小組,有的研究小組采用生理信號遙測技術,觀察其對正常大鼠、犬及病理模型動物體溫、血壓、心率、呼吸、腦電、胃腸電和血流動力學等的影響;有的研究小組采用多種聯用分析技術,如液—質聯用技術、放免技術等,觀察正常動物和病理模型動物肝、脾、腦、肺、腎、生殖器等多種組織器官物質包括遞質(如腎上腺素、乙酰膽堿、γ-氨基丁酸、谷氨酸等)、激素(甲狀腺素、性激素、糖皮質激素、胰島素等)、酶、免疫因子(白介素系統、細胞因子等)、信息(cAMP、cGMP、NO、NOS、PG、IP3)、能量(線粒體氧化系統、糖、脂肪代謝)等的變化規律;有的研究小組收集血液、尿液、腦脊液和膽汁等體液,采用LC-MSn的方法,進行高通量的定性和定量分析,檢測不同藥性中藥引起的內源性代謝產物如血清中5′-AMP、5′-GMP,尿中3-甲氧-4-羥扁桃酸(VMA)、17-OH類固醇等代謝物組的數據組。
由于課題涉及的學科范圍廣,科研人員多,實驗項目和實驗數據繁雜,建立開放的實驗數據共享平臺是項目順利進行的基礎。通過建立基于J2EE的數據共享平臺[2~4],各研究小組可以通過Internet錄入其實驗數據,隨時查詢實驗數據,對實驗數據進行查詢統計分析。同時,所有研究小組的實驗數據可以集中在統一的數據庫中,便于實驗數據的綜合分析,并為后續的數據挖掘提供良好的數據源。
1系統設計
1.1系統總體結構
系統體系結構是典型的三層結構[5],如圖1所示,由表示層、應用層和數據層組成。
1)表示層
表示層是人機交互界面,由JSP和HTML頁面構成。負責接收用戶的輸入信息,對輸入信息的有效性進行驗證,將輸入信息傳送到應用層處理。同時,應用層處理后的客戶請求經服務器JSP引擎動態解析,以HTML靜態頁面的形式返回給瀏覽器,為用戶提供一個友好而美觀的顯示界面。
2)應用層
應用層是系統架構的核心,接收表示層傳來的客戶請求,啟用事件調度機制,通過Servlet將請求分派給相應的Java-Bean。JavaBean通過Hibernate同數據層進行通信,將數據請求發送到數據層,并接收數據層傳來的處理結果,將其傳回到表示層。在客戶端并發數較多時,采用數據調度策略,通過負載平衡技術減輕客戶端的并發訪問壓力。應用層也負責Web發布工作,對JSP頁面等進行動態解釋。
3)數據層
數據層的主要功能是以數據庫的方式存儲各類實驗數據及用戶、部門等基本數據,方便研究人員記錄、查詢和傳輸實驗數據,是整個系統的基礎。負責接收應用層傳遞來的SQL請求,對其作出正確的解釋,查詢或更改數據庫中的數據,然后將處理結果返回到應用層。為了保證數據的安全性,防止數據由于計算機軟硬件故障造成數據的丟失,采取主服務器和備份服務器雙機模式,一旦主服務器出現故障,實驗數據仍然可以從備份服務器上獲取。
1.2功能模塊設計
根據中藥寒熱藥性生物效應評價模式研究實驗的技術路線圖提取系統功能需求,最終確定本系統的功能模塊,即系統管理、基礎數據維護和實驗數據管理,共三大模塊。其中,實驗數據管理模塊按實驗項目的不同可分為若干個子模塊,如圖2所示。
1.3數據庫設計
在數據庫設計中,采用Power Designer[6]進行數據庫的邏輯模型和物理模型的設計,并自動生成SQL Server 2000的SQL腳本。為了增強SQL腳本的可讀性,對自動生成的腳本進行適當的注釋。表1是心電實驗的部分數據表。
表1心電實驗的部分數據表
2系統實現
2.1開發環境
系統采用B/S結構,基于J2EE平臺,實現系統的跨平臺部署和運行。后臺數據庫采用大型關系數據庫MS SQL Ser-ver 2000,發布工具采用Tomcat 5.5,編程工具采用JBuilder 2006,源代碼版本控制采用JBuilder自帶的CVS。
2.2源代碼版本控制
源代碼版本控制是軟件工程配置管理的重要組成部分,也是提高團隊開發效率所不可或缺的途徑[7]。通過源代碼版本管理,團隊成員可以協調一致地進行開發,不會錯誤地覆蓋其他人員在每個源文件上所作的修改;可以輕松地找到任意源文件的先前版本;可以方便地獲取所有源文件的最新版本并集成到工程中。源代碼版本工具較多,常用有Visual Source Safe、VS、Team Source StarTeam和SVN等。考慮到同開發工具的良好集成性,本項目采用CVS進行源代碼管理,直接使用JBuilder的Team菜單下的功能就能將工程文件放入CVS庫,并從庫中取出最新的工程文件。
2.3利用Hibernate實現持久層開發
在基于J2EE的系統開發中,為充分利用Java面向對象的特點,開發人員常設計Java類來對業務數據進行操作?,F在常用的用于存儲數據的數據庫通常是關系數據庫而非對象數據庫,因此Java類中對數據的增、刪、改等無法直接持久化到數據庫對應的關系表中。要解決該問題,必須建立程序中的類和數據庫中關系表的映射。早前的解決方案是CMP或者JDBC+DAO,但是兩者都不夠理想,CMP不符合EJB規范,而JDBC+DAO查詢支持不完全。Hibernate是一個開放源代碼的對象關系映射框架,對JDBC進行了輕量級的對象封裝 方便Java程序員使用面向對象編程的思維來操縱數據庫[8]。Hibernate工作原理如圖3所示。
3Hibernate開發實例
下面以開發實驗藥物基本信息維護功能為例,介紹Hibernate的應用。
1)建立TraditionalChineseDrug數據庫表
TraditionalChineseDrug數據庫表的主要字段如表2所示。
表2TraditionalChineseDrug數據庫表的主要字段
字段名數據類型注釋
iDrugIDint藥品ID號
vcDrugNamevarchar(50)藥品名稱
vcDrugAliasvarchar(50)藥品別名
vcEngNamevarchar(50)藥品英文名
………
2)建立可持久化類
創建一個新類:BD_TraditionalChineseDrug,其屬性與數據庫表的字段一一對應,并有相應的Set和Get方法。其內容如下:
public class BD_TraditionalChineseDrug{
public int iDrugID;
public java.lang.String vcDrugName;
public java.lang.String vcDrugAlias;
public java.lang.String vcEngName;
…
public void setvcDrugName(String vcDrugName)
{
this.vcDrugName = vcDrugName;
}
public void setvcDrugAlias(String vcDrugAlias) {
this.vcDrugAlias = vcDrugAlias;
}
public int getiDrugID(){
return iDrugID;
}
public String getvcDrugName(){
return vcDrugName;
}
……
}
3)建立映射文件
新建一個名稱為BD_TraditionalChineseDrug.hbm.xml的文件,這個XML文件定義了對象屬性映射到數據庫表的關系。該文件與BD_TraditionalChineseDrug.class文件放在同一包目錄下面。文件的內容如下:
〈?xml version=\"1.0\" encoding=′utf-8′?〉
〈!DOCTYPE hibernate-mapping PUBLIC
\"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"
\"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"〉
〈hibernate-mapping〉
〈class name = \"com. TCDP. BD. ValueObject. BD_Traditio-nalChineseDrug\" table = \"BD_TraditionalChineseDrug\"〉
〈id name=\"iDrugID\"〉
〈generator class=\"identity\"/〉
〈/id〉
〈property name=\"vcDrugName\"/〉
〈property name=\"vcDrugAlias\"/〉
〈property name=\"vcEngName\"/〉
……
〈/class〉
〈/hibernate-mapping〉
4)建立Hibernate配置文件
Hibernate可以使用XML文件來進行配置,配置文件名默認為hibernate.cfg.xml。其主要內容如下:
〈hibernate-configuration〉
〈session-factory〉
〈property name=\"connection.url\"〉jdbc:microsoft:
sqlserver://localhost:1433;DatabaseName=TCDP973;useUnicode=true
amp;characterEncoding=gbk;SelectMethod=Cursor〈/property〉
〈property name=\"connection.username\"〉sa 〈/property〉
〈property name=\"connection.password\"〉sa 〈/property〉
〈mapping resource=\"com/TCDP/BD/ValueObject/BD_Tradi-tionalChineseDrug.hbm.xml\"/〉
〈/session-factory〉
〈/hibernate-configuration〉
5)進行數據持久化操作
完成上述步驟后,就可以通過操作對象實現數據庫表記錄的更新。示例代碼通過操作實例化的ChineseDrug,實現在數據庫中增加一條藥品信息記錄。
public boolean addChineseDrug(BD_TraditionalChineseDrug ChineseDrug) {
try {
Session s=HibernateUtil.currentSession();
HibernateUtil.beginTransaction();
s.save(chineseDrug);
s.flush();
HibernateUtil.commitTransaction();
HibernateUtil.closeSession();
return true;
}catch (HibernateException e) {
e.printStackTrace();
}
return 1;
}
4結束語
本文基于B/S架構和大型關系數據庫設計開發了基于J2EE的中藥藥性實驗數據共享平臺。系統實現過程中,采用Power Designer設計工具設計了數據庫的邏輯模型和物理模型,采用了Hibernate技術實現持久層開發,并采用JBuilder開發工具自帶的CVS管理源代碼版本和協同團隊開發。系統已在國家“973”課題組中順利運行,為課題組各研究小組提供了良好的數據共享平臺。系統經過進一步的完善后,可以適用于各種中藥實驗數據的管理,幫助中藥科研人員更好地管理、分析和利用實驗數據。
參考文獻:
[1]
國家“973”課題組.中藥四氣生物效應評價模式研究課題任務書[R].南昌:江西中醫學院,2006.
[2]孫衛琴. Java面向對象編程[M].北京:電子工業出版社,2006.
[3]周水清,金甌,賀建飚.基于J2EE構建的電信自助服務系統[J].計算機應用研究,2006,23(12):211-212.
[4]張曉諾,曹寶香,王廷蔚.基于J2EE的PDM系統權限管理設計和實現[J].計算機應用研究,2006,23(9):111-112.
[5]張友生.軟件體系結構[M].2版.北京:清華大學出版社,2006.
[6]蔣學英.Web數據庫設計與開發[M].北京:清華大學出版社,2007.
[7]張海藩.軟件工程導論[M].北京:清華大學出版社,2003.
[8]孫衛琴.精通Hibernate:Java對象持久化技術詳解[M].北京:電子工業出版社,2005.