程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring DAO層的設計思想

Spring DAO層的設計思想

編輯:關於JAVA

近幾年持久化技術領域異常喧囂,各種框架雨後春筍般地冒出,Sun也連接不斷地頒布幾個持久化規范。Spring對多個持久化技術提供了集成的支持,包括Hibernate、iBatis、JDO、JPA、TopLink,此外,還通過Spring JDBC框架對JDBC API進行簡化。Spring面向DAO制定了一個通用的異常體系,屏蔽具體持久化技術的異常,使業務層和具體的持久化技術達到解耦。此外,Spring提供了模板類簡化各種持久化技術的使用。通用的異常體系及模板類是Spring整合各種五花八門持久化技術的不二法門,Spring不但借此實現了對多種持久化技術的整合,還可以不費吹灰之力整合潛在的各種持久化框架,體現了“開-閉原則”的經典應用。

Spring的DAO理念

DAO(Data Access Object)是用於訪問數據的對象,雖然我們在大多數情況下,將數據保存在數據庫中,但這並不是唯一的選擇,你也可以將數據存儲到文件中或LDAP中。DAO不但屏蔽了數據存儲的最終介質的不同,也屏蔽了具體的實現技術的不同。

早期,JDBC是訪問數據庫的主流選擇,近幾年,數據持久技術獲得了長足的發展,Hibernate、iBatis、JPA、JDO成為持久層中爭放異彩的實現技術。只要為數據訪問定義好DAO接口,並使用具體的技術實現DAO接口的功能,你就可以在不同的實現技術間平滑的切換。

圖 1 業務層通過DAO接口訪問數據

圖 1是一個典型的DAO應用實例,在UserDao中定義訪問User數據對象的接口方法,業務層通過UserDao操作數據,並使用具體持久技術實現UserDao接口方法,這樣業務層和具體持久化技術就實現了解耦。

提供DAO層的抽象可以帶來一些好處,首先,我們可以很容易地構造模擬對象,方便單元測試的開展,其次在使用切面時,我們有更多的選擇:既可以使用JDK動態代理也可以使用CGLib動態代理。

Spring本質上希望以統一的方式整合底層的持久化技術:以統一的方式進行調用及事務管理,避免讓具體的實現侵入到業務層的代碼中。由於每個持久化實現技術都有各自的異常體系,所以Spring提供了統一的異常體系,使不同異常體系的阻抗得以彌消,方便定義出和具體實現技術無關的DAO接口,以及整合到相同的事務管理體系中。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved