徐雪梅
XU Xue-mei
(南通大學(xué) 現(xiàn)代教育技術(shù)中心,南通 226019)
基于Dorado、Spring、Hibernate實(shí)現(xiàn)檢測(cè)數(shù)據(jù)上報(bào)系統(tǒng)
Examination data reporting system based on Dorado, Spring and Hibernate
徐雪梅
XU Xue-mei
(南通大學(xué) 現(xiàn)代教育技術(shù)中心,南通 226019)
本文論述了Dorado、Spring和Hibernate,并實(shí)現(xiàn)了農(nóng)產(chǎn)品檢驗(yàn)檢測(cè)機(jī)構(gòu)的數(shù)據(jù)上報(bào)和匯總系統(tǒng),通過實(shí)踐證明利用Dorado、Spring和Hibernate框架開發(fā)Java EE項(xiàng)目效率提高顯著,系統(tǒng)具有良好的用戶體驗(yàn)和可維護(hù)性。
Dorado;Spring;Hibernate;數(shù)據(jù)上報(bào)
長期以來,企事業(yè)單位一直采用傳統(tǒng)的手工方式報(bào)送報(bào)表,這已經(jīng)不適應(yīng)新形勢(shì)下現(xiàn)代化的信息管理要求。一方面,數(shù)據(jù)統(tǒng)計(jì)范圍及統(tǒng)計(jì)量越來越大,統(tǒng)計(jì)格式經(jīng)常變化,統(tǒng)計(jì)的及時(shí)性和準(zhǔn)確率要求越來越高;另一方面,統(tǒng)計(jì)的最終目的——匯總和分析已成為統(tǒng)計(jì)工作的最大瓶頸。
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,使得基于B/S結(jié)構(gòu)的數(shù)據(jù)上報(bào)和統(tǒng)計(jì)成為可能,它正在取代傳統(tǒng)的統(tǒng)計(jì)方式,成為電子政務(wù)、企業(yè)網(wǎng)絡(luò)化管理的數(shù)據(jù)支持平臺(tái)。
本文采用Dorado、Spring和Hibernate實(shí)現(xiàn)農(nóng)產(chǎn)品檢驗(yàn)檢測(cè)機(jī)構(gòu)的數(shù)據(jù)上報(bào)和匯總系統(tǒng)(以下簡(jiǎn)稱檢測(cè)數(shù)據(jù)上報(bào)),較好地解決了當(dāng)前農(nóng)產(chǎn)品檢驗(yàn)檢測(cè)機(jī)構(gòu)工作中的實(shí)際問題,同時(shí)通過實(shí)踐證明了利用Dorado、Spring和Hibernate框架易于Java EE項(xiàng)目開發(fā)的分工,開發(fā)效率提高顯著,完成的系統(tǒng)具有良好的用戶體驗(yàn)、可維護(hù)性以及可擴(kuò)展性。
Dorado是由上海銳道信息技術(shù)有限公司研發(fā)的富瀏覽器展現(xiàn)中間件,是商業(yè)軟件。Dorado展現(xiàn)中間件是Web應(yīng)用表現(xiàn)層的運(yùn)行平臺(tái)與開發(fā)平臺(tái),提高了Web應(yīng)用的系統(tǒng)可用性與開發(fā)效率。Dorado帶給軟件應(yīng)用系統(tǒng)更為清晰的層次化架構(gòu),這使項(xiàng)目管理更為明確易行。Dorado可以與各種Java EE后臺(tái)業(yè)務(wù)邏輯框架配合使用,是基于標(biāo)準(zhǔn)技術(shù)的開放框架[1]。
Dorado的架構(gòu)一般為多層架構(gòu):dorado + 后臺(tái)業(yè)務(wù)邏輯框架 + 應(yīng)用服務(wù)器 + 數(shù)據(jù)庫,其中后臺(tái)業(yè)務(wù)邏輯框架可以為數(shù)據(jù)訪問層業(yè)務(wù)對(duì)象層或控制層的框架(如Spring、Hibernate、iBatis等)。
Spring Framework 是一個(gè)開源Java EE的應(yīng)用程序框架,以Apache許可證形式發(fā)布。該框架提供了一個(gè)簡(jiǎn)易的開發(fā)方式,利用這種開發(fā)方式可以避免那些可能致使底層代碼變得繁雜混亂的大量的屬性文件和幫助類。
Spring 中包含的關(guān)鍵特性:1)強(qiáng)大的基于JavaBeans 的采用控制翻轉(zhuǎn)(Inversion of Control,IoC)原則的配置管理,使得應(yīng)用程序的組建更加快捷簡(jiǎn)易;2)數(shù)據(jù)庫事務(wù)的一般化抽象層,允許聲明式(Declarative)事務(wù)管理器,簡(jiǎn)化事務(wù)的劃分使之與底層無關(guān);3)JDBC 抽象層提供了有針對(duì)性的異常等級(jí)(不再從SQL異常中提取原始代碼),簡(jiǎn)化了錯(cuò)誤處理,大大減少了程序員的編碼量。4)以資源容器、DAO 實(shí)現(xiàn)和事務(wù)策略等形式與 Hibernate、JDO 和 iBATIS集成。利用眾多的翻轉(zhuǎn)控制方便特性來全面支持,解決了許多典型的Hibernate集成問題。所有這些全部遵從Spring通用事務(wù)處理和通用數(shù)據(jù)訪問對(duì)象異常等級(jí)規(guī)范;5)靈活的基于核心 Spring 功能的 MVC 網(wǎng)頁應(yīng)用程序框架。開發(fā)者通過策略接口將擁有對(duì)該框架的高度控制,因而該框架將適應(yīng)于多種呈現(xiàn)(View)技術(shù),例如JSP、Tiles等。Spring 中間層可以輕易地結(jié)合于任何基于 MVC 框架的網(wǎng)頁層,例如 Struts、Dorado等;6)提供諸如事務(wù)管理等服務(wù)的面向方面編程框架[2]。
1.3 Hibernate介紹
Hibernate是一種Java語言下的對(duì)象關(guān)系映射解決方案。
目前,對(duì)象數(shù)據(jù)庫尚不成熟,關(guān)系數(shù)據(jù)庫的使用仍然最廣泛,占據(jù)了數(shù)據(jù)庫市場(chǎng)90%以上份額。但關(guān)系數(shù)據(jù)庫中存放的數(shù)據(jù)是非面向?qū)ο蟮模瑸榱私鉀Q面向?qū)ο蟮膽?yīng)用程序和面向關(guān)系的數(shù)據(jù)庫系統(tǒng)之間的“阻抗不匹配”,需進(jìn)行對(duì)象與關(guān)系的映射。映射工具能夠在Java對(duì)象與數(shù)據(jù)庫表之間建立映射關(guān)系,具有自我存儲(chǔ)到關(guān)系數(shù)據(jù)庫的能力,對(duì)對(duì)象的改變能夠直接存儲(chǔ)到數(shù)據(jù)庫而不用數(shù)據(jù)庫存取的代碼,形成相對(duì)獨(dú)立的對(duì)象持久層。目前存在很多ORM 工具,如TopLink、Hibernate和Castor等。在這些映射工具中,Hibernate是較為有效的一種,Hibernate是一個(gè)純Java的對(duì)象關(guān)系映射和持久性框架,它允許開發(fā)者用XML配置文件把普通Java對(duì)象映射到關(guān)系數(shù)據(jù)庫表[3]。
檢測(cè)數(shù)據(jù)上報(bào)總體要求:能充分利用互聯(lián)網(wǎng)技術(shù)對(duì)各農(nóng)產(chǎn)品質(zhì)量安全檢測(cè)站(點(diǎn))的檢測(cè)數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)化集中處理,即各農(nóng)產(chǎn)品質(zhì)量安全檢測(cè)點(diǎn)通過互聯(lián)網(wǎng)方式向系統(tǒng)傳輸各項(xiàng)檢測(cè)數(shù)據(jù)(包括:農(nóng)藥殘留、甲醛和亞硝酸鹽殘留等),系統(tǒng)能根據(jù)各檢測(cè)點(diǎn)上傳來的數(shù)據(jù)自動(dòng)進(jìn)行實(shí)時(shí)動(dòng)態(tài)的匯總、統(tǒng)計(jì)、分類、查詢等處理,并自動(dòng)生成各種格式的統(tǒng)計(jì)圖表。主管部門只需通過用戶名和密碼登錄到平臺(tái),按照相應(yīng)的權(quán)限即可瀏覽到相關(guān)數(shù)據(jù)信息。
系統(tǒng)的業(yè)務(wù)功能比較簡(jiǎn)單,主要有上報(bào)數(shù)據(jù)、審核數(shù)據(jù)、匯總數(shù)據(jù)以及查看數(shù)據(jù)(報(bào)表)。
系統(tǒng)還有一些非功能需求譬如身份驗(yàn)證等。身份驗(yàn)證我們通過Servlet/JSP容器Tomcat 的Filter機(jī)制作出了一個(gè)簡(jiǎn)單通用的框架,只需將框架集成到系統(tǒng)中并進(jìn)行配置即可。對(duì)于基于Filter機(jī)制的簡(jiǎn)單通用驗(yàn)證框架,此處不再贅述。
圖1 系統(tǒng)層次架構(gòu)
用戶通過瀏覽器觸發(fā)Dorado展現(xiàn)中間件,Dorado通過Spring調(diào)用業(yè)務(wù)類DataProvider和DataResolver,業(yè)務(wù)類繼續(xù)通過Spring調(diào)用Hibernate支持的DAO類來完成數(shù)據(jù)的增刪改查。
3.2.1 數(shù)據(jù)持久層
基于Hibernate框架的數(shù)據(jù)持久層,有效地降低了三層架構(gòu)中層與層之間的耦合度,提高了系統(tǒng)的可擴(kuò)展性和可維護(hù)性[4]。
使用Hibernate的持久層應(yīng)先配置Hibernate的Configuration文件,一般文件名為hibernate.cfg.xml,其中包括數(shù)據(jù)庫連接的相關(guān)信息以及resource的mapping信息。數(shù)據(jù)持久層主要包括映射文件、實(shí)體類、數(shù)據(jù)訪問對(duì)象,如系統(tǒng)中資源的映射文件、實(shí)體類、數(shù)據(jù)訪問對(duì)象分別為Resource.hbm.xml、Resource.java、ResourceDAO.java。這些類運(yùn)用Eclipse的Hibernate插件可以容易地生產(chǎn),從而提高開發(fā)效率。
3.2.2 業(yè)務(wù)邏輯層
業(yè)務(wù)邏輯層包括表示層傳遞過來的數(shù)據(jù)與存儲(chǔ)數(shù)據(jù)的計(jì)算和驗(yàn)證,根據(jù)表示層指令將結(jié)果指派給數(shù)據(jù)持久層進(jìn)行操作。
其中通過Spring完成與數(shù)據(jù)持久層和表示層的溝通。
本系統(tǒng)中與數(shù)據(jù)持久層的溝通信息全部在manager-context.xml中。如
Default Provider Resolver類主要調(diào)用Default Manager完成數(shù)據(jù)提供和數(shù)據(jù)持久化,業(yè)務(wù)邏輯類可以采用繼承或代理模式完成。
3.2.3 表示層
表示層采用Dorado,Dorado包含各種常用的展現(xiàn)層構(gòu)件,如:各種形式的表格、樹、表單、導(dǎo)航、下拉框、菜單以及一些不可見控件等,控件的交互操作性包括支持頁面不刷新技術(shù)、支持多處修改一次性提交等。
Dorado的核心是構(gòu)造一個(gè)view文件,文件主要包括Datasets、Controls和Properties三部分。一般先在Datasets中添加Dataset,Dorado支持的Dataset種類非常多,本系統(tǒng)采用的是MarmotDataset,如TestDataDetail Dataset部分如下:
通過Dorado自定義標(biāo)簽編寫Jsp文件,簡(jiǎn)潔明了。同樣可以使用MarmotUpdateCommand控件完成數(shù)據(jù)的持久化。
本文在實(shí)際的數(shù)據(jù)上報(bào)系統(tǒng)分析基礎(chǔ)上,研究Dorado、Spring和Hibernate框架的集成,通過Dorado DataSet的DataProvider和DataResolver屬性調(diào)用Spring管理的DataProvider和DataResolver對(duì)象、DataProvider和DataResolver對(duì)象通過成員變量調(diào)用Hibernate完成數(shù)據(jù)增刪改查操作的技術(shù)路線。實(shí)踐證明,利用Dorado及Spring和Hibernate框架技術(shù)能有效地將表示層、業(yè)務(wù)邏輯層和持久層分離,極大地提高了系統(tǒng)開發(fā)效率和復(fù)用性。
報(bào)表是系統(tǒng)的一個(gè)重要模塊,限于篇幅本文沒有論述。系統(tǒng)的報(bào)表引擎采用JasperReport,開發(fā)工具iReport,這是一個(gè)圖形化的輔助工具,因?yàn)镴asperReport僅提供了可使用的類庫而未提供更好的開發(fā)工具,iReport的出現(xiàn)解決了這一難題,它們配合使用極大程度地提高報(bào)表設(shè)計(jì)效率。
[1] 上海銳道信息技術(shù)有限公司.Dorado白皮書[DB/OL].ftp://www.bstek.com/public/dorado/dorado5whitepaperDoc.zip.2008-01-22.
[2] 維基百科.Spring Framework[DB/OL].http://zh.wikipedia.org/zh-tw/Spring_Framework. 2010-04-07.
[3] 莊國強(qiáng),施祖平.基于Struts和Hibernate的農(nóng)產(chǎn)品檢測(cè)信息直報(bào)系統(tǒng)的實(shí)現(xiàn)[J].南通大學(xué)學(xué)報(bào)自然科學(xué)版,2008,4:36-40.
[4] 李勇,于洪志,達(dá)哇彭措.基于Hibernate的民族古籍?dāng)?shù)字化系統(tǒng)數(shù)據(jù)持久層應(yīng)用[J].南通大學(xué)學(xué)報(bào)自然科學(xué)版,2008 7(2):18-20.
TP311
B
1009-0134(2010)11(上)-0038-03
10.3969/j.issn.1009-0134.2010.11(上).13
2010-06-23
江蘇省現(xiàn)代教育技術(shù)研究“十一五”規(guī)劃重點(diǎn)項(xiàng)目“圖書館電子資源綜合評(píng)價(jià)系統(tǒng)研究”(2009-R-13778)
徐雪梅(1975 -),女,江蘇南通人,講師,工程碩士,研究方向?yàn)橛?jì)算機(jī)應(yīng)用。