999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java語(yǔ)言下的Hibernate與JDBC的對(duì)比研究

2011-12-31 00:00:00劉巳龍
科海故事博覽·科教論壇 2011年9期

摘要:Hibernate是一個(gè)面向Java環(huán)境的對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射工具。對(duì)象/關(guān)系數(shù)據(jù)庫(kù)映射(ORM))這個(gè)術(shù)語(yǔ)表示一種技術(shù),用來(lái)把對(duì)象模型表示的對(duì)象映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去。Hibernate不僅僅管理Java類到數(shù)據(jù)庫(kù)表的映射(包括Java數(shù)據(jù)類型到SQL數(shù)據(jù)類型的映射),還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以大幅度減少開發(fā)時(shí)人工使用SQL和JDBC處理數(shù)據(jù)的時(shí)間。本文將Hibernate開源框架數(shù)據(jù)庫(kù)的持久化訪問和JDBC技術(shù)從多個(gè)方面進(jìn)行了對(duì)比分析。

關(guān)鍵詞:數(shù)據(jù)持久化;JDBC;Hibernate;對(duì)比分析

一、Hibernate 技術(shù)

Hibernate技術(shù)Hibernate是一個(gè)開放源代碼的、面向Java環(huán)境的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得程序員可以隨心所欲地使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)。Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合。

Hibernata通過(guò)創(chuàng)建映射信息處理數(shù)據(jù)關(guān)系。即系統(tǒng)中每一個(gè)類與其對(duì)應(yīng)的數(shù)據(jù)庫(kù)表之間的關(guān)聯(lián)信息。映射文檔是用來(lái)定義持久數(shù)據(jù)和在需要時(shí)保存關(guān)于對(duì)象的持久域、關(guān)聯(lián)、子類和代理的XML文檔。Hibernate核心接口一共有5個(gè),分別為:Session、SessionFactory、Transaction、Query和Configuration。Session接口負(fù)責(zé)執(zhí)行與數(shù)據(jù)庫(kù)的交流,包含了很多常見的SQL語(yǔ)句;SessionFaetory接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象;Transaction接口負(fù)責(zé)事務(wù)相關(guān)的操作。它是可選的,只有在編寫自己的底層事務(wù)處理代碼時(shí)才需要;Query接口負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫(kù)查詢;Configuration接口負(fù)責(zé)配置并啟動(dòng)Hibernate,創(chuàng)建SessionFaetory對(duì)象。

在實(shí)際應(yīng)用中,由于Session對(duì)象是非線程安全的,為了避免l葉J現(xiàn)并發(fā)性問題,將Session對(duì)象放人ThreadLocal中的變量。然后創(chuàng)建Configuration類的實(shí)例,它的構(gòu)造方法是將配置信息(Hibernate config.xm1)瀆入到內(nèi)存。一個(gè)Configuration實(shí)例代表Hibernate所有Java類到Sql數(shù)據(jù)庫(kù)映射的集合。接著創(chuàng)建SessionFactory實(shí)例,從SessionFaetory中取得Session的實(shí)例。可將Session看作是介于數(shù)據(jù)庫(kù)連接與事務(wù)管理的一種中問接口,它提供了對(duì)數(shù)據(jù)庫(kù)進(jìn)行持久化的一些方法。Hibernate在對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作之前,必須先取得Session實(shí)例,相當(dāng)于JDBC在對(duì)數(shù)據(jù)庫(kù)操作前取得Connection實(shí)例 。

二、JDBC技術(shù)

Java應(yīng)用程序訪問數(shù)據(jù)庫(kù)的最直接的方式就是直接訪問JDBC API。JDBC是Java Database Connectivity的縮寫。JDBC是一種可用于執(zhí)行SQL語(yǔ)句的Java API,它是由一些Java的類和接13組成的。在JDBC這種方式下,接口和實(shí)現(xiàn)相分離,Java程序B為運(yùn)行了HibernateTest.java后的數(shù)據(jù)庫(kù)數(shù)據(jù))設(shè)計(jì)人員利用JDBC接1:3進(jìn)行數(shù)據(jù)庫(kù)訪問操作。而實(shí)際上對(duì)數(shù)據(jù)庫(kù)操作南JDBC驅(qū)動(dòng)程序中的接口實(shí)現(xiàn)類完成。通過(guò)使用JDBC,程序人員可以很方便地將SQL語(yǔ)言傳給具有JDBC驅(qū)動(dòng)程序的任何一種數(shù)據(jù)庫(kù)。

簡(jiǎn)單地說(shuō),JDBC可以完成3件事:一是與數(shù)據(jù)庫(kù)建立連接;二是發(fā)送SQL語(yǔ)句;i是處理結(jié)果。

三、對(duì)比分析

JDBC與Hibernate在性能上相比,JDBC靈活性有優(yōu)勢(shì)。而Hibernate在易學(xué)性,易用性上有些優(yōu)勢(shì)。當(dāng)用到很多復(fù)雜的多表聯(lián)查和復(fù)雜的數(shù)據(jù)庫(kù)操作時(shí),JDBC有優(yōu)勢(shì)。總體對(duì)比分析如下:

1.?dāng)?shù)據(jù)庫(kù)操作

相同點(diǎn):兩者都是JAVA的數(shù)據(jù)庫(kù)操作中間件。兩者對(duì)于數(shù)據(jù)庫(kù)進(jìn)行直接操作的對(duì)象都不是線程安全的,都需要及時(shí)關(guān)閉。兩者都可以對(duì)數(shù)據(jù)庫(kù)的更新操作進(jìn)行顯式的事務(wù)處理。

不同點(diǎn):使用的SQL語(yǔ)言不同:JDBC使用的是基于關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)SQL語(yǔ)言,Hibernate使用的是HQL(Hibernate query language)語(yǔ)言。操作的對(duì)象不同:JDBC操作的是數(shù)據(jù),將數(shù)據(jù)通過(guò)SQL語(yǔ)句直接傳送到數(shù)據(jù)庫(kù)中執(zhí)行,Hibernate操作的是持久化對(duì)象,由底層持久化對(duì)象的數(shù)據(jù)更新到數(shù)據(jù)庫(kù)中。數(shù)據(jù)狀態(tài)不同:JDBC操作的數(shù)據(jù)是“瞬時(shí)”的,變量的值無(wú)法與數(shù)據(jù)庫(kù)中的值保持一致,而Hibernate操作的數(shù)據(jù)是可持久的,即持久化對(duì)象的數(shù)據(jù)屬性的值是可以跟數(shù)據(jù)庫(kù)中的值保持一致的。

2.JDBC與Hibernate讀取性能

(1)JDBC仍然是最快的訪問方式,不論是Create還是Read操作,都是JDBC快。

(2)Hibernate使用uuid.hex構(gòu)造主鍵,性能稍微有點(diǎn)損失,但是不大。

(3)Create操作,JDBC在使用批處理的方式下速度比Hibernate快,使用批處理方式耗用JVM內(nèi)存比不使用批處理方式要多得多。

(4)讀取數(shù)據(jù),Hibernate的Iterator速度非常緩慢,因?yàn)樗敲看蝞ext的時(shí)候才去數(shù)據(jù)庫(kù)取數(shù)據(jù),這一點(diǎn)從觀察任務(wù)管理器的java進(jìn)程占用內(nèi)存的變化也可以看得很清楚,內(nèi)存是幾十K幾十K的增加。

(5)讀取數(shù)據(jù),Hibernate的List速度很快,因?yàn)樗且淮涡园褦?shù)據(jù)取完,這一點(diǎn)從觀察任務(wù)管理器java進(jìn)程占用內(nèi)存的變化也可以看得很清楚,內(nèi)存幾乎是10M的10M的增加。

四、總結(jié)

兩種技術(shù)的比較可見JDBC與Hibernate功能上一樣。Hibernate其實(shí)就是基于JDBC的。封裝了JDBC底層數(shù)據(jù)訪問的細(xì)節(jié)。它們的相同點(diǎn)則體現(xiàn)在都是數(shù)據(jù)庫(kù)操作的中間件,對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的對(duì)象都不是線程安全的,都需要及時(shí)地關(guān)閉;都可以對(duì)數(shù)據(jù)庫(kù)的更新操作進(jìn)行顯示的事務(wù)處理。JDBC中繁瑣的代碼問題。在多表連接、表問級(jí)聯(lián)方面也有其優(yōu)越性,使用Hibernate可以實(shí)現(xiàn)跨數(shù)據(jù)庫(kù)操作,簡(jiǎn)化開發(fā),方便維護(hù),進(jìn)行項(xiàng)目的耦合。JDBC也具有其自身的優(yōu)點(diǎn),在性能上,其靈活性有優(yōu)勢(shì),很復(fù)雜的多表聯(lián)查和復(fù)雜的數(shù)據(jù)庫(kù)操作時(shí),JDBC亦將體現(xiàn)出其自身的優(yōu)秀性。

主站蜘蛛池模板: 在线综合亚洲欧美网站| 久久人妻xunleige无码| 午夜限制老子影院888| 国产中文一区二区苍井空| 中文无码精品A∨在线观看不卡| 制服丝袜 91视频| 最新国语自产精品视频在| 久久国产精品嫖妓| 99热这里只有精品国产99| 亚洲人成日本在线观看| 欧美色99| 亚洲综合18p| 亚洲国产成人精品无码区性色| 婷婷伊人久久| 天天躁日日躁狠狠躁中文字幕| 国产精品手机在线观看你懂的| 中文字幕无线码一区| 欧美色图第一页| 91人妻日韩人妻无码专区精品| 欧美激情综合一区二区| 特级毛片8级毛片免费观看| 国产亚洲欧美日本一二三本道| 亚洲国产欧美国产综合久久 | 亚洲三级色| 国产原创演绎剧情有字幕的| 欧美一道本| 欧日韩在线不卡视频| 欧美一区二区啪啪| 日韩欧美色综合| 999福利激情视频| 亚洲无码高清视频在线观看| 亚洲v日韩v欧美在线观看| 男人天堂伊人网| 欧美特黄一免在线观看| 无码综合天天久久综合网| 久久久久亚洲av成人网人人软件| 亚洲日韩日本中文在线| 欧美成人h精品网站| 亚洲最黄视频| 久久综合激情网| 在线亚洲小视频| 国产女同自拍视频| 亚洲天堂自拍| 另类重口100页在线播放| 天天躁夜夜躁狠狠躁图片| 精品无码国产一区二区三区AV| 美女内射视频WWW网站午夜| 久久www视频| 久久性视频| 免费无遮挡AV| 不卡国产视频第一页| 国产又爽又黄无遮挡免费观看| 久久综合干| 亚洲综合婷婷激情| 国产精品真实对白精彩久久| 99在线观看免费视频| 欧美亚洲第一页| 欧美三级自拍| 18禁高潮出水呻吟娇喘蜜芽| 日韩成人午夜| 亚洲欧美另类中文字幕| 2021国产精品自产拍在线| 国产欧美视频在线| 国产手机在线小视频免费观看| 国产二级毛片| 精品伊人久久久久7777人| 欧美成人综合视频| 亚洲一级色| 伊人激情综合网| 亚洲婷婷六月| 国产91视频免费| 欧美亚洲日韩中文| 国产亚洲精品97AA片在线播放| 国产欧美高清| 99国产精品国产| 国产精品爽爽va在线无码观看| 久久久久国产精品熟女影院| 最新日本中文字幕| 毛片免费在线视频| 亚洲人成在线精品| 9啪在线视频| 激情网址在线观看|