標籤:hibernate
一: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
Hibernate學習:初識hibernate