J2EE
的三層結構是指表示層(
Presentation
),業務邏輯層(
Business Logic
)以及基礎架構層
(
Infrastructure
),這樣的劃分非常經典,但是在實際的項目開發法中,開發者通常對三層結構進行
擴充來滿足一些項目的具體要求,一個最常用的擴充就是将三層體系擴充為五層體系,即表示層
(Presentation),
控制
/
中介層
(Controller/Mediator)
、領域層
(Domain),
資料持久層
(Data Persistence)
和資料
源層
(Data Source)
。它其實是在三層架構中增加了兩個中間層。控制
中介層位于表示層和領域層之
間,資料持久層位于領域層和基礎架構層之間。由于對象範例和關系範例這兩大領域之間存在
“
阻抗
不比對
”
,是以把資料持久層單獨作為
體系的一個層提出來的原因就是能夠在對象-關系資料
庫之間提供一個成功的企業級映射解決方案,盡最大可能彌補這兩種範例之間的差異。
持久 英文即 persistence。就是把資料儲存到可掉電式儲存設備中供以後使用。
<dl></dl>
<dd></dd>
1概述
2持久層架構
大多數情況下特别是企業級應用,資料持久化往往也就意味着将記憶體中的資料儲存到磁盤上加以固化,而持久化的實作過程則大多通過各種關系資料庫來完成。
那麼持久層呢?
延續思路,所謂“持久層”,也就是在系統邏輯層面上,專著于實作資料持久化的一個相對獨立的領域(Domain)。
持久層是負責向(或者從)一個或者多個資料存儲器中存儲(或者擷取)資料的一組類群組件。這個層必須包括一個業務領域實體的模型(即使隻是一個中繼資料模型)。
不過這裡有一個字需要特别強調,也就是所謂的“層”。
對于應用系統而言,資料持久功能大多是必不可少的組成部分。那不就是說,我們的系統中,已經天然的具備了“持久層”概念?
也許是,但也許實際情況并非如此。
之是以要獨立出一個“持久層”的概念,而不是“持久子產品”,“持久單元”,也就意味着,我們的系統架構中,應該有一個相對獨立的邏輯層面,專著于資料持久化邏輯的實作.與系統其他部分相對而言,這個層面應該具有一個較為清晰和嚴格的邏輯邊界。
Hibernate
Hibernate[1] 是一個開放源代碼的對象關系映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以随心所欲的使用對象程式設計思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的用戶端程式使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。Eclipse平台下的Hibernate輔助開發工具:【Hibernate Synchronizer】【MiddlegenIDE】
MyBatis
使用MyBatis 提供的ORM機制,對業務邏輯實作人員而言,面對的是純粹的Java對象, 這一層與通過Hibernate 實作ORM 而言基本一緻,而對于具體的資料操作,Hibernate 會自動生成SQL 語句,而MyBatis則要求開發者編寫具體的SQL 語句。相對Hibernate等 “全自動”ORM機制而言,MyBatis 以SQL開發的工作量和資料庫移植性上的讓步,為系統 設計提供了更大的自由空間。作為“全自動”ORM 實作的一種有益補充,MyBatis 的出現顯 得别具意義。