1. 程式人生 > >簡述hibernate和jdbc的區別 優缺點

簡述hibernate和jdbc的區別 優缺點

JDBC與Hibernate在效能上相比,JDBC靈活性有優勢。而Hibernate在易學性,易用性上有些優勢。當用到很多複雜的多表聯查和複雜的資料庫操作時,JDBC有優勢。

相同點:

◆兩者都是JAVA的資料庫操作中介軟體。

◆兩者對於資料庫進行直接操作的物件都不是執行緒安全的,都需要及時關閉。

◆兩者都可以對資料庫的更新操作進行顯式的事務處理。

不同點

◆使用的SQL語言不同:JDBC使用的是基於關係型資料庫的標準SQL語言,Hibernate使用的是HQL(Hibernate query language)語言

◆操作的物件不同:JDBC操作的是資料,將資料通過SQL語句直接傳送到資料庫中執行,Hibernate操作的是持久化物件,由底層持久化物件的資料更新到資料庫中。

◆資料狀態不同:JDBC操作的資料是“瞬時”的,變數的值無法與資料庫中的值保持一致,而Hibernate操作的資料是可持久的,即持久化物件的資料屬性的值是可以跟資料庫中的值保持一致的。

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的增加。

6、JDBC讀取資料的方式和Hibernate的List方式是一樣的(這跟JDBC驅動有很大關係,不同的JDBC驅動,結果會很不一樣),這從觀察java程序記憶體變化可以判斷出來,由於JDBC不需要像Hibernate那樣構造一堆Cat物件例項,所以佔用JVM記憶體要比 Hibernate的List方式大概少一半左右。

7、Hibernate的Iterator方式並非一無是處,它適合於從大的結果集中選取少量的資料,即不需要佔用很多記憶體,又可以迅速得到結果。另外Iterator適合於使用JCS緩衝。