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

Java語言下的Hibernate與JDBC的對比研究

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

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

關鍵詞:數據持久化;JDBC;Hibernate;對比分析

一、Hibernate 技術

Hibernate技術Hibernate是一個開放源代碼的、面向Java環境的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得程序員可以隨心所欲地使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合。

Hibernata通過創建映射信息處理數據關系。即系統中每一個類與其對應的數據庫表之間的關聯信息。映射文檔是用來定義持久數據和在需要時保存關于對象的持久域、關聯、子類和代理的XML文檔。Hibernate核心接口一共有5個,分別為:Session、SessionFactory、Transaction、Query和Configuration。Session接口負責執行與數據庫的交流,包含了很多常見的SQL語句;SessionFaetory接口負責初始化Hibernate。它充當數據存儲源的代理,并負責創建Session對象;Transaction接口負責事務相關的操作。它是可選的,只有在編寫自己的底層事務處理代碼時才需要;Query接口負責執行各種數據庫查詢;Configuration接口負責配置并啟動Hibernate,創建SessionFaetory對象。

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

二、JDBC技術

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

簡單地說,JDBC可以完成3件事:一是與數據庫建立連接;二是發送SQL語句;i是處理結果。

三、對比分析

JDBC與Hibernate在性能上相比,JDBC靈活性有優勢。而Hibernate在易學性,易用性上有些優勢。當用到很多復雜的多表聯查和復雜的數據庫操作時,JDBC有優勢。總體對比分析如下:

1.數據庫操作

相同點:兩者都是JAVA的數據庫操作中間件。兩者對于數據庫進行直接操作的對象都不是線程安全的,都需要及時關閉。兩者都可以對數據庫的更新操作進行顯式的事務處理。

不同點:使用的SQL語言不同:JDBC使用的是基于關系型數據庫的標準SQL語言,Hibernate使用的是HQL(Hibernate query language)語言。操作的對象不同:JDBC操作的是數據,將數據通過SQL語句直接傳送到數據庫中執行,Hibernate操作的是持久化對象,由底層持久化對象的數據更新到數據庫中。數據狀態不同:JDBC操作的數據是“瞬時”的,變量的值無法與數據庫中的值保持一致,而Hibernate操作的數據是可持久的,即持久化對象的數據屬性的值是可以跟數據庫中的值保持一致的。

2.JDBC與Hibernate讀取性能

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

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

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

(4)讀取數據,Hibernate的Iterator速度非常緩慢,因為他是每次next的時候才去數據庫取數據,這一點從觀察任務管理器的java進程占用內存的變化也可以看得很清楚,內存是幾十K幾十K的增加。

(5)讀取數據,Hibernate的List速度很快,因為他是一次性把數據取完,這一點從觀察任務管理器java進程占用內存的變化也可以看得很清楚,內存幾乎是10M的10M的增加。

四、總結

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

主站蜘蛛池模板: 日韩黄色大片免费看| 欧美笫一页| 亚洲精品桃花岛av在线| 亚洲综合九九| 亚洲中文无码h在线观看 | 一级爆乳无码av| 欧美另类图片视频无弹跳第一页| 啦啦啦网站在线观看a毛片| 在线精品视频成人网| 99激情网| 国产成人高清在线精品| 久青草免费视频| 国内精品九九久久久精品| 啊嗯不日本网站| 免费Aⅴ片在线观看蜜芽Tⅴ| 国产精品冒白浆免费视频| 亚洲人成人无码www| 四虎成人精品在永久免费| 久久国产香蕉| 欧美精品亚洲二区| 在线色国产| 亚洲一区二区精品无码久久久| 日韩毛片免费观看| 欧美国产日产一区二区| 不卡色老大久久综合网| 国产一区二区网站| 精品伊人久久大香线蕉网站| 久久这里只有精品2| 国国产a国产片免费麻豆| 亚洲第一区在线| 国产人成乱码视频免费观看 | 国产成人一区免费观看 | 精品视频在线一区| 亚洲男人天堂网址| 欧美一区二区啪啪| 囯产av无码片毛片一级| 精品久久久久久中文字幕女| 国产白浆一区二区三区视频在线| 亚洲福利片无码最新在线播放| 国产在线无码av完整版在线观看| 国产激爽爽爽大片在线观看| lhav亚洲精品| 亚洲欧美日韩成人在线| 国产精品男人的天堂| 亚洲一欧洲中文字幕在线| 亚洲第一香蕉视频| 亚洲青涩在线| 亚洲欧美激情小说另类| 亚洲男人天堂2018| 国产香蕉在线视频| 久久免费成人| 色婷婷电影网| 国产69精品久久久久孕妇大杂乱| 精品国产免费观看| 亚洲一区二区无码视频| 精品免费在线视频| 国产男女免费视频| 亚洲成人黄色在线观看| 国产白浆一区二区三区视频在线| 亚洲有无码中文网| 色综合网址| 国产白丝av| 精品国产aⅴ一区二区三区| 色成人亚洲| 国产在线一区二区视频| 18禁黄无遮挡免费动漫网站| 日本道综合一本久久久88| 91av成人日本不卡三区| 日本午夜精品一本在线观看| 香蕉eeww99国产在线观看| 亚洲色图欧美视频| 欧美激情第一欧美在线| 国产熟睡乱子伦视频网站| 亚洲精品无码AⅤ片青青在线观看| 国产一区二区三区精品久久呦| 久久久久人妻精品一区三寸蜜桃| 久久精品无码中文字幕| 97久久免费视频| 久久永久免费人妻精品| 99激情网| 国产在线观看一区精品| 4虎影视国产在线观看精品|