摘 要:隨著社會(huì)經(jīng)濟(jì)的快速發(fā)展,網(wǎng)絡(luò)信息技術(shù)的進(jìn)步,出現(xiàn)了一種Java語(yǔ)言。在開(kāi)發(fā)J2EE標(biāo)準(zhǔn)時(shí),若直接用JDBC來(lái)操作系統(tǒng)數(shù)據(jù)庫(kù),在一方面不僅工程大和代碼冗長(zhǎng),同時(shí)也不便于維護(hù),易產(chǎn)生較大影響與危險(xiǎn)。為有效地解決這些問(wèn)題,必須要以一種完全面向?qū)ο笞陨順I(yè)務(wù)意識(shí)以及概念來(lái)開(kāi)發(fā),在這一過(guò)程中,產(chǎn)生了很多的對(duì)象持久化技術(shù),如Hibernate、JDO以及OJB等。下面文章就利用Hibernate對(duì)象持久化服務(wù)簡(jiǎn)化Java數(shù)據(jù)庫(kù)訪問(wèn)進(jìn)行研究和分析。
關(guān)鍵詞:Hibernate;簡(jiǎn)化;Java;數(shù)據(jù)庫(kù);方位;持久化服務(wù)
中圖分類號(hào):TP311.13
1 Hibernate的概述
基于Java這一大語(yǔ)言環(huán)境下,在開(kāi)發(fā)各種標(biāo)準(zhǔn)時(shí),可借助于Hibernate這一技術(shù)的應(yīng)用來(lái)解決映射方面的問(wèn)題,這種技術(shù)支持所用的全部Java思想,能夠直接映射大部分JavaBean,且不需對(duì)其進(jìn)行任何的修改。即便是要實(shí)施修改,也只是在系統(tǒng)的Bean中添加相應(yīng)的私有訪問(wèn)方式,就能夠把某一用戶所定義的不同實(shí)例映射至同一張表同一行。同時(shí)還可借助于代理模式的應(yīng)用將載入類過(guò)程進(jìn)行簡(jiǎn)化,從而降低Hibernate QL的應(yīng)用率,并且還可在數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)代碼編寫(xiě)量的提取,以此達(dá)到節(jié)約開(kāi)發(fā)成本以及時(shí)間的目的。除此之外,借助于該技術(shù)的應(yīng)用,還可有效解決在開(kāi)發(fā)過(guò)程中所遇到的各種問(wèn)題,使生產(chǎn)力得到相應(yīng)的提高。
在Hibernate中對(duì)于每種數(shù)據(jù)庫(kù)均有相對(duì)應(yīng)的Dialect來(lái)實(shí)施操作優(yōu)化,以此提升其在不同情況下的工作效率。Hibernate工作原理圖如圖1所示,從圖1可知,Hibernate所實(shí)施的這一持久化服務(wù)作用于某一數(shù)據(jù)庫(kù),應(yīng)用程序借助于Hibernate和數(shù)據(jù)庫(kù)之間發(fā)生關(guān)系,并操作數(shù)據(jù),而Hibernate則借助于類與properties的映射文件把類映射至相應(yīng)的數(shù)據(jù)庫(kù)中,以此Application就可借助于這一持久化對(duì)象類來(lái)進(jìn)行數(shù)據(jù)庫(kù)的直接訪問(wèn)。Hibernate這一應(yīng)用程序所蘊(yùn)含的運(yùn)行方式有很多種,其中在全面體系中,系統(tǒng)中應(yīng)用程序底層的JDBC、JIA以及API等均會(huì)被抽象,而在此時(shí)Hibernate仍舊可以照管系統(tǒng)中所有的這些細(xì)節(jié);而在輕型體系中,當(dāng)JDBC和應(yīng)用程序連接以后,應(yīng)用程序可自行管理各事物,而這種方式也是對(duì)于Hibernate中最小子集的應(yīng)用。
2 利用Hibernate對(duì)象持久化服務(wù)簡(jiǎn)化Java數(shù)據(jù)庫(kù)訪問(wèn)
Hibernate屬于Java的開(kāi)源項(xiàng)目,可將底層代碼對(duì)用戶予以開(kāi)放,這樣用戶就可在需要這些源代碼時(shí),直接對(duì)其實(shí)施修改,同時(shí)還可完成拓展功能或者定制功能。該技術(shù)開(kāi)發(fā)隊(duì)伍相對(duì)較為活躍,可在很大程度上使該技術(shù)穩(wěn)定且長(zhǎng)期發(fā)展得到保障。
在Java應(yīng)用程序中,Hibernate的主要作用就在于借助于該應(yīng)用程序的應(yīng)用,不僅可實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn),同時(shí)還可完成持久層操作。Hibernate借助于properties這一配置文件與XML Mapping這一映射文件把類映射至相應(yīng)的數(shù)據(jù)庫(kù)中,并對(duì)其實(shí)施記錄,從而進(jìn)一步是Application這一應(yīng)用程序可借助于Hibernate所有的持久化對(duì)象來(lái)對(duì)數(shù)據(jù)庫(kù)實(shí)施直接訪問(wèn),這樣不僅節(jié)約數(shù)據(jù)庫(kù)訪問(wèn)的時(shí)間,同時(shí)在很大程度上也提高了其操作效率。
在數(shù)據(jù)庫(kù)和和Java應(yīng)用程序間,其紐帶為Hibernate,其主要負(fù)責(zé)Java和數(shù)據(jù)庫(kù)之間的映射。在應(yīng)用Hibernate這一框架時(shí),首先應(yīng)該進(jìn)行其配置文化的編寫(xiě),接著按照配置文化所生成的這一映射文件,來(lái)完成映射工作,并且生成為持久化對(duì)象,待上述任務(wù)結(jié)束以后,最后在進(jìn)行業(yè)務(wù)邏輯類的編寫(xiě),完成業(yè)務(wù)邏輯工作,通過(guò)Hibernate API進(jìn)行Java數(shù)據(jù)庫(kù)的訪問(wèn)圖如2所示。下面文章就Hibernate對(duì)象持久化服務(wù)的利用來(lái)簡(jiǎn)化Java數(shù)據(jù)庫(kù)進(jìn)行闡述。
第一,數(shù)據(jù)表的構(gòu)建。數(shù)據(jù)表的構(gòu)建主要是針對(duì)各業(yè)務(wù)對(duì)象以及其之間的關(guān)系所構(gòu)建的表,這種數(shù)據(jù)表的構(gòu)建與一般數(shù)據(jù)庫(kù)構(gòu)建相同。在本次研究中,在數(shù)據(jù)庫(kù)中構(gòu)建了以u(píng)serinformation為名字的數(shù)據(jù)表。
第二,配置文件的創(chuàng)建。在創(chuàng)建Hibernate配置文件時(shí),主要包括兩種形式,即屬性為Java的文件與在XML基礎(chǔ)上的文件。為便于配置文件的讀取,通常情況下,把其應(yīng)用在classpath。在該文件中,所要設(shè)計(jì)的內(nèi)容主要報(bào)包括數(shù)據(jù)庫(kù)連接所需的數(shù)據(jù)、XML文檔類型定義以及Hibernate的管理事務(wù)等。
第三,持久類的創(chuàng)建。在實(shí)際應(yīng)用過(guò)程中,可借助于標(biāo)準(zhǔn)JavaBean的應(yīng)用達(dá)到持久化對(duì)象的目的。要注意的是,在應(yīng)用時(shí),數(shù)據(jù)庫(kù)中的數(shù)據(jù)表列和對(duì)象屬性應(yīng)該為對(duì)應(yīng)的,且所包含的數(shù)據(jù)類型以及個(gè)數(shù)等也均要一一相對(duì)應(yīng)。此外,在命名時(shí),應(yīng)嚴(yán)格按照bean規(guī)則來(lái)實(shí)施。
第四,映射文件的創(chuàng)建。依靠于XML格式文件的應(yīng)用,由Hibernate來(lái)指定需持久化的數(shù)據(jù)庫(kù),接著利用Hibernate來(lái)范圍數(shù)據(jù)庫(kù),在操作數(shù)據(jù)時(shí),需事先和數(shù)據(jù)庫(kù)連接,根據(jù)Hibernate所配置的一系列文件來(lái)實(shí)施代碼的連接,這樣就可及時(shí)完成和數(shù)據(jù)庫(kù)之間的連接,從而簡(jiǎn)化數(shù)據(jù)庫(kù)的訪問(wèn)。
3 結(jié)束語(yǔ)
綜上所述,通過(guò)Hibernate對(duì)象持久化服務(wù)的應(yīng)用,不僅能夠完成數(shù)據(jù)庫(kù)數(shù)據(jù)至業(yè)務(wù)對(duì)象的映射工作,符合對(duì)象持久化需求,同時(shí)還可使Java數(shù)據(jù)庫(kù)的訪問(wèn)得到簡(jiǎn)化,降低了開(kāi)發(fā)人員出現(xiàn)錯(cuò)誤的頻率,為開(kāi)發(fā)提供了更為合理且科學(xué)的模塊劃分方式,便于開(kāi)發(fā)時(shí)間以及成本的節(jié)約,所提供的業(yè)務(wù)邏輯更為靈活且科學(xué)。
參考文獻(xiàn):
[1]李德兵,尹戰(zhàn)文,王洪明.Java EE基于Hibernate的ORM框架[J].電子技術(shù),2010,37(2):7-8,3.
[2]王學(xué)軍.利用Hibernate對(duì)象持久化服務(wù)簡(jiǎn)化Java數(shù)據(jù)庫(kù)訪問(wèn)之我見(jiàn)[J].無(wú)線互聯(lián)科技,2013(2):193.
[3]嚴(yán)科磊,郝平,賈為.Hibernate映射文件中Cascade和Inverse淺析[J].中國(guó)新技術(shù)新產(chǎn)品,2010(23):26.
[4]傅棋燦,史浩山.基于Linq to NHibernate數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微型電腦應(yīng)用,2010,26(12):44-46.
作者單位:天津海運(yùn)職業(yè)學(xué)院,天津 300350