Hibernate學習:初識hibernate

十五樓亮哥發表於2015-02-04

一:S2SH框架流程圖


hibernate的作用就是在Dao層將model的資料持久化到DB資料庫。

這幅圖上沒有標記spring,

其實spring貫穿整個過程:
spring面向介面程式設計:
spring將service注入到Action,
spring將dao注入到service
spring針對servic進行宣告式的事務管理。


二:單獨看hibernate


hibernate的工作原理:

step1:建立Configuration:進行配置檔案的裝載操作,提取所有配置檔案進行解析。

step2:建立SessionFactory物件:託尼各國建立好的Configurtation物件可以建立一個sessionFactory物件的例項,他是產生Session物件例項的工廠,它在整個應用中應該是唯一的。

step2:建立Session物件:Session物件類似於資料庫的連線物件,可以理解為於資料庫建立的一個連線,但他的功能比JDBC重的Connection的物件豐富很多。

step4開始一個事物  在Java中定義一個事物操作的開始,這是使用Hibernate進行持久化操作必不可少的步驟。

step5 進行持久化操作,在這個步驟中可以讀取或者儲存java物件。

step6 結束事物 顯示的結束事物

step 7關不Session ,類似於釋放資料庫的連線。


三:hibernate的優點和缺點

Hibernate優點
(1) 物件/關聯式資料庫對映(ORM)
它使用時只需要操縱物件,使開發更物件化,拋棄了資料庫中心的思想,完全的物件導向思想
(2) 透明持久化(persistent)
帶有持久化狀態的、具有業務功能的單執行緒物件,此物件生存期很短。這些物件可能是普通的JavaBeans/POJO,這個物件沒有實現第三方框架或者介面,唯一特殊的是他們正與(僅僅一個)Session相關聯。一旦這個Session被關閉,這些物件就會脫離持久化狀態,這樣就可被應用程式的任何層自由使用。(例如,用作跟表示層打交道的資料傳輸物件。)            
(3) 事務Transaction(org.hibernate.Transaction)
 應用程式用來指定原子操作單元範圍的物件,它是單執行緒的,生命週期很短。它通過抽象將應用從底層具體的JDBC、JTA以及CORBA事務隔離開。某些情況下,一個Session之內可能包含多個Transaction物件。儘管是否使用該物件是可選的,但無論是使用底層的API還是使用Transaction物件,事務邊界的開啟與關閉是必不可少的。 
(4) 它沒有侵入性,即所謂的輕量級框架
(5) 移植性會很好
(6) 快取機制,提供一級快取和二級快取
(7) 簡潔的HQL程式設計
 
2. Hibernate缺點
(1)  Hibernate在批量資料處理時有弱勢
(2) 針對單一物件簡單的增刪查改,適合於Hibernate,而對於批量的修改,刪除,不適合用Hibernate,這也是OR框架的弱點;要使用資料庫的特定優化機制的時候,不適合用Hibernate


相關文章