王小霞
摘要:本文從Hibernate框架技術(shù)入手,研究Hibernate框架技術(shù),探討其在民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)中的應(yīng)用。系統(tǒng)通過采用Hibernate框架,解決了并發(fā)訪問控制低的問題,增強(qiáng)系統(tǒng)的可擴(kuò)展性和良好的可維護(hù)性。使開發(fā)更加規(guī)范,安裝和部署更加靈活。隨著社會(huì)發(fā)展、科研管理等因素的變化,民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)也將不斷發(fā)展,作為系統(tǒng)的設(shè)計(jì)完成者將會(huì)根據(jù)民族研究科研管理數(shù)據(jù)的更新、用戶需求的變化等,對(duì)系統(tǒng)不斷更新完善。
關(guān)鍵詞:Hibernate;數(shù)據(jù)庫(kù);信息系統(tǒng)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)05-0085-02
1 引言(概述)
數(shù)據(jù)庫(kù)中間件Hibernate的使用,可以實(shí)現(xiàn)對(duì)關(guān)系型數(shù)據(jù)庫(kù)對(duì)象化,大大提高SQL的使用和JDBC與數(shù)據(jù)庫(kù)效率[1]。數(shù)據(jù)庫(kù)中間件Hibernate框架技術(shù),提供臨時(shí)數(shù)據(jù)緩存供應(yīng)用者查詢,分一級(jí)數(shù)據(jù)和二級(jí)數(shù)據(jù)緩存,明顯提高查詢速度。本文在分析Hibernate框架技術(shù)的基礎(chǔ)上,展開探討這一技術(shù)在民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)開發(fā)中的應(yīng)用。
2 Hibernate簡(jiǎn)介
Hibernate作為數(shù)據(jù)庫(kù)與界面之間的橋梁,需要面向?qū)ο笏枷氩倏v對(duì)象。對(duì)象可能是普通的JavaBeans/POJO。應(yīng)用程序通過抽象將應(yīng)用從底層事務(wù)隔離開。使用底層的API或Transaction對(duì)象完成輕量級(jí)框架提供一級(jí)緩存和二級(jí)緩存。Hibernate直接提供相關(guān)支持,底層驅(qū)動(dòng)可以隨意切換數(shù)據(jù)庫(kù),快速簡(jiǎn)潔。使業(yè)務(wù)層與具體數(shù)據(jù)庫(kù)分開,只針對(duì)Hibernate 進(jìn)行開發(fā),完成數(shù)據(jù)和對(duì)象的持久化。針對(duì)不同的數(shù)據(jù)庫(kù)形成不同的SQL 查詢語(yǔ)句,降低數(shù)據(jù)庫(kù)之間遷移的成本。Hibernate支持多種緩存機(jī)制,Hibernate適配MS SQLSERVER、ORACLE、SQL、H2、Access和Mysql等多種數(shù)據(jù)庫(kù)[2]。Hibernate用反射機(jī)制實(shí)現(xiàn)持久化對(duì)象操作,實(shí)現(xiàn)與IDE(Integrated Development Environment)的耦合度[3]。
Hibernate使用數(shù)據(jù)庫(kù)和配置信息為應(yīng)用程序提供持久化服務(wù)。從配置文件中讀取數(shù)據(jù)庫(kù)相關(guān)參數(shù),將持久化類和數(shù)據(jù)表對(duì)應(yīng)使用。用Hibernate API對(duì)象持久化,利用映像信息將持久化操作翻譯為SQL語(yǔ)句進(jìn)行查詢。
Hibernate框架技術(shù)最關(guān)鍵是數(shù)據(jù)持久化,是將數(shù)據(jù)保存到持久層的過程。持久層的數(shù)據(jù)在掉電后也不會(huì)丟失的數(shù)據(jù)。持久層是基于Hibernate技術(shù)的檢索系統(tǒng)開發(fā)的基本。系統(tǒng)結(jié)構(gòu)的層次模型有如圖的三個(gè)階段[4]如圖1。
整個(gè)過程首先實(shí)現(xiàn)應(yīng)用層和數(shù)據(jù)層。數(shù)據(jù)層保存持久化數(shù)據(jù),應(yīng)用層接收輸入的數(shù)據(jù)。然后通過MVC 模式實(shí)現(xiàn)業(yè)務(wù)邏輯與表示層的分開。表示層和用戶實(shí)現(xiàn)交互,業(yè)務(wù)邏輯層處理數(shù)據(jù)持久化操作。將第二階段業(yè)務(wù)邏輯層的功能部署拆分后,業(yè)務(wù)邏輯層完成核心業(yè)務(wù)邏輯處理,持久層完成對(duì)象持久化。降低業(yè)務(wù)邏輯層復(fù)雜度的同時(shí)將數(shù)據(jù)持久化讓其他組件完成[5]。
民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)選擇用Spring+Hibernate+ Bootstrap(SHB) 框架實(shí)現(xiàn)的檢索系統(tǒng)即是實(shí)現(xiàn)分層體系結(jié)構(gòu)的輕量級(jí)J2EE框架。顯示層采用Bootstrap MVC框架,中間用Spring,后臺(tái)采用Hibernate。分別實(shí)現(xiàn)三層次功能。持久層技術(shù)與其他部分有較為清晰嚴(yán)格的區(qū)分,提供數(shù)據(jù)持久化方案。
3 Hibernate技術(shù)在民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)中的應(yīng)用
Spring+Hibenate Web框架在保持了J2EE優(yōu)勢(shì)的同時(shí),簡(jiǎn)化了Web 的開發(fā)。Hibernate搜索通過設(shè)置和通用的API提供全文檢索支持。民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)選擇使用Spring+ Hibenate Web框架完成開發(fā)。
需要提高系統(tǒng)查詢速度,需要多個(gè)數(shù)據(jù)庫(kù)之間的交叉查詢,生成多個(gè)臨時(shí)數(shù)據(jù)庫(kù)作為橋梁。數(shù)據(jù)庫(kù)中間件Hibernate框架可以不管是使用底層的API還是使用Transaction對(duì)象,沒有侵入性,移植性好,提供雙極緩存。
Hibernate在系統(tǒng)中用底層驅(qū)動(dòng)完成隨意切換數(shù)據(jù)庫(kù),選用mysql數(shù)據(jù)庫(kù)和Spring集成使用。使用JPA組件完成數(shù)據(jù)庫(kù)表生成與修改。利用POI組件鏈接Excel,讀取內(nèi)容與上傳文件進(jìn)行匹配,進(jìn)行批量輸入文獻(xiàn),先生成臨時(shí)數(shù)據(jù)庫(kù)后生產(chǎn)成果分值統(tǒng)計(jì)計(jì)算功能。
3.1 系統(tǒng)持久層使用 Hibernate技術(shù)實(shí)現(xiàn)O/R映射
“持久層”負(fù)責(zé)數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)檢索和更新。使用JDBC實(shí)體 Beans和JDO等建立。Hibernate實(shí)現(xiàn)對(duì)象和關(guān)系映射和數(shù)據(jù)的持久化。Hibernate的查詢語(yǔ)言HQL與SQL一樣查詢持久化對(duì)象,管理Java類到數(shù)據(jù)庫(kù)表的映射,提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法。
Hibernate首先將普通的Java對(duì)象定義成持久化類。再通過 ORM在數(shù)據(jù)庫(kù)和類的對(duì)象之間建立映射,通過數(shù)據(jù)庫(kù)接口訪問數(shù)據(jù)。
3.2 Hibernate的配置
Hibernate持久化需要用配置文件完成數(shù)據(jù)庫(kù)連接。配置文件一種是Hibernate.cfg.xml,另一種是Java屬性文件。兩種都可以提高應(yīng)用程序的可維護(hù)性。Hibernate配置文件除驅(qū)動(dòng)配置信息外包含持久化類映射文件。XML格式的配置文件可直接聲明映射文件,無(wú)需調(diào)用Configuration類的addClass方法加載映射文件,提高應(yīng)用程序的可維護(hù)性[6]。
完成持久層,先持久化域?qū)ο?。各種映射包括many to many、many to one、one to one、one to many等。在民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)中的項(xiàng)目管理模塊定義了T_TOPIC_PROJECT表的映射類TopicProject。使用Spring+Hibernate進(jìn)行配置。
民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)在完成開發(fā)設(shè)計(jì)實(shí)現(xiàn)過程中使用Hibernate數(shù)據(jù)庫(kù)中間件技術(shù)為該系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)路線難點(diǎn)及主要?jiǎng)?chuàng)新點(diǎn)在于成果計(jì)分分類統(tǒng)計(jì)模塊。
我們使用Hibernate技術(shù)根據(jù)期工作原理將成果庫(kù)每一條成果的計(jì)分?jǐn)?shù)據(jù)相關(guān)參數(shù),將持久化類和數(shù)據(jù)表對(duì)應(yīng)進(jìn)行對(duì)象持久化,利用映像對(duì)應(yīng)于SQL語(yǔ)句進(jìn)行查詢。利用POI組件鏈接Excel,進(jìn)行批量輸入文獻(xiàn),先生成臨時(shí)數(shù)據(jù)庫(kù)后生產(chǎn)成果分值統(tǒng)計(jì)計(jì)算功能。最后達(dá)到計(jì)分可以按照個(gè)人、部門或者時(shí)間段分類統(tǒng)計(jì)查詢。
民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)是中國(guó)社會(huì)科學(xué)院民族學(xué)與人類學(xué)研究所在社科院級(jí)強(qiáng)化科研管理的大背景要求下,做好網(wǎng)絡(luò)信息化工作的同時(shí),強(qiáng)化所級(jí)科研管理,積極調(diào)用所級(jí)多年網(wǎng)絡(luò)信息化工作技術(shù)人員,根據(jù)所級(jí)科研管理崗的具體要求,在大數(shù)據(jù)背景縱使下,研究Mysql數(shù)據(jù)庫(kù)、Hibernate數(shù)據(jù)庫(kù)框架、Solr全文檢索技術(shù)Tomcat中間件等多項(xiàng)關(guān)鍵技術(shù),開發(fā)出的具有自主知識(shí)產(chǎn)權(quán)的科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)。在整個(gè)開發(fā)完成過程中Hibernate數(shù)據(jù)庫(kù)框架技術(shù)起到至關(guān)重要的作用。解決了傳統(tǒng)的并發(fā)訪問控制低問題,簡(jiǎn)化開發(fā)過程,使系統(tǒng)具有更好的可擴(kuò)展性和良好的可維護(hù)性??偨Y(jié)出以下幾點(diǎn)經(jīng)驗(yàn):
(1)數(shù)據(jù)庫(kù)表較多表結(jié)構(gòu)復(fù)雜時(shí)使用Hibernate優(yōu)勢(shì)明顯。
(2)查詢要求不高或訪問數(shù)據(jù)量不大時(shí),考慮Hibernate比JDBC更有優(yōu)勢(shì)。
(3)Hibernate配置文件和持久化類的映射文件需要隨著Hibernate的更新同步更新。
4 結(jié)語(yǔ)
本文通過民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)案例的實(shí)現(xiàn)成功結(jié)果證實(shí)Hibernate數(shù)據(jù)庫(kù)框架技術(shù)完成間接對(duì)于關(guān)系型數(shù)據(jù)庫(kù)檢索的可行性。很好的彌補(bǔ)了對(duì)于關(guān)系型數(shù)據(jù)庫(kù)難以直接檢索的困難。采用Hibernate框架,使系統(tǒng)的開發(fā)更加規(guī)范,安裝和部署更加靈活。此系統(tǒng)的實(shí)際應(yīng)用說明該系統(tǒng)表現(xiàn)出良好的性能。必將成為數(shù)據(jù)庫(kù)檢索系統(tǒng)的一個(gè)有力的解決方案。
當(dāng)然任何一個(gè)系統(tǒng)都有可能在運(yùn)行過程中出新的問題,隨著社會(huì)發(fā)展、科研管理等因素的變化,民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)也將不斷發(fā)展,作為系統(tǒng)的設(shè)計(jì)完成者將會(huì)根據(jù)民族研究科研管理數(shù)據(jù)的更新、用戶需求的變化等,對(duì)系統(tǒng)不斷更新完善。在民族研究科研管理數(shù)據(jù)庫(kù)檢索系統(tǒng)進(jìn)行完善的分析與處理。在該系統(tǒng)應(yīng)用的基礎(chǔ)上,繼續(xù)研究進(jìn)一步探索數(shù)據(jù)庫(kù)檢索多庫(kù)檢索機(jī)制、MVC框架,Hibernate和tomcat技術(shù)。
參考文獻(xiàn)
[1]張燕,冷文浩,周斌.基于Struts、Spring和Hibernate的船舶性能系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,(8):2121-2124.
[2]楊飛,袁建華.Hibernate 框架在權(quán)限管理系統(tǒng)中的應(yīng)用[J].微電子學(xué)與計(jì)算機(jī),2007,(2):206-208.
[3]錢忠勝.基于Hibernate 的數(shù)據(jù)持久化研究及其應(yīng)用[J].微計(jì)算機(jī)信息(管控一體化),2007,(6):242-245.
[4]陳正舉.基于 HIBERNATE 的數(shù)據(jù)庫(kù)訪問優(yōu)化[J].計(jì)算機(jī)應(yīng)用與軟件,2012,(7):144-149.
[5]夏赟,李志蜀.基于Hibernate框架的數(shù)據(jù)持久化層的研究及其應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2008,(9):2446-2449.
[6]夏赟,李志蜀.基于Hibernate框架的數(shù)據(jù)持久化層的研究及其應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2008,(9):2446-2449.