最近做的一個項目是基於Spring mvc + Spring + hibernate框架。樓主以前未接觸過hibernate,通過最近的學習、實踐和查閱資料也有了一定深度的理解。現在回過頭來,打算按零基礎整理出hibernate學習筆記。
一、hibernate出現的背景以及所需要的準備知識
1、web四層體系架構:
方框裏面是用到的一些技術和容器。
分層的好處:解耦合,使用J2EE多層架構,在需求變更時,只需要改變與需求有關的層的代碼,不需要 改動其他層和其他邏輯的代碼。
由於我們的hibernate等一些持久化框架在傳統的web架構裏面處於業務邏輯層,下面將介紹一下業務邏輯層。
2、傳統的業務邏輯層
業務邏輯層作爲用戶訪問Internet資源庫的中間層結構,處理用戶的請求,爲上層準備數據,實現密集的邏輯業務。其中EJB容器提供了對分佈式、事務性、安全性、持久性、資源管理等支持。
然而這樣業務邏輯層是有一些不足之處:
1. EJB大而全,在實際簡單的應用中,顯得有些過度設計和過於笨重,其中很多服務在是實際應用中並不需要或者可以用其他更簡單的解決方案代替;
另外EJB的侵入式編程模型也使程序的設計喪失了面向對象性,使EJB的單元測試也變得比較用難。
2.業務邏輯層主要功能是處理業務邏輯的細節,在處理中需要頻繁的訪問和操作數據,如果數據庫改變業務邏輯層改動會很大
改進:1.引入Spring輕量級框架,Spring使用AOP容器取代EJB容器做聲明事務管理的功能。
2. 在持久性管理上用Hibernate/mybatis等框架代替 EJB的容器管理持久性(CMP)。hibernate其實也是ejb模式的一種實現方式。
3.在業務邏輯層和數據庫之間增加一箇中間層是很必要的。這層就是數據持久層,是對數據訪問和操作的細節封裝。這樣當數據庫發生改變,或者數據的操作發生改變時,只需 要修改數據持久層,可以避免業務邏輯層直接操作數據庫,並且可以使代碼的模塊性,可維護性等得到增強。
直觀有下圖所示:
3、經典j2ee分層架構
由此j2ee的分層架構得來:表示層、業務邏輯層、持久層。
例如一個項目的架構分層圖裏麪包含各層用到的框架技術:
由此我們可以清楚的看到所謂的持久層框架hibernate,是處於怎樣的位置和作用了。
好了,通過以上介紹我們大致知道爲什麼要用hibernate,以及他在j2ee架構裏面起到的作用。下文講解hibernate背景知識數據持久化和ORM