(筆記)Spring實戰_征服數據庫(1)_Spring的數據訪問哲學

DAO是數據訪問對象(data access object)的縮寫。DAO提供了數據讀取和寫入到數據庫中的一種方式。它們應該以接口的方式發佈功能,而應用程序的其他部分就可以通過接口來訪問了。
數據訪問層是以持久化技術無關的方式來進行訪問的。持久化方式的選擇獨立於DAO,只有相關的數據訪問方法通過接口來進行發佈。這可以實現靈活的設計並使得切換持久化框架對應用程序其他部分所帶來的影響最小。
傾向於將持久層隱藏在接口之後 .. 接口是實現松耦合代碼的關鍵。
爲了實現將數據訪問層與應用程序的其他部分隔離開來,Spring採用了一個方式就是提供貫穿整個DAO框架的統一異常體系。
1.瞭解Spring的數據訪問異常體系
JDBC SQLException:SQLException被視爲處理數據訪問所有問題的通用異常。對於所有的數據訪問問題都會拋出SQLException,而不是對每種可能的問題都會有不同的異常類型。
Hibernate:提供了20個左右的異常,分別對應於特定的數據訪問問題。這樣就可以針對想處理的異常編寫catch代碼塊。即便如此,Hibernate的異常是其本身所特有的。我們想使特定的持久化機制獨立於數據訪問層。如果拋出了Hibernate所特有的異常,那麼對Hibernate的使用將會滲透到應用程序的其他部分。
Spring的平臺無關持久化異常
Spring幾乎爲讀取和寫入數據庫的所有錯誤都提供了異常。
我們可以使用Spring拋出一致的異常,而不用關心所選擇的持久化方案。這有助於我們將所選擇持久化機制與數據訪問層隔離開來。
DataAccessException只是Spring處理檢查型異常和非檢查型異常哲學的一個範例。Spring認爲觸發異常的很多問題是不能再catch代碼塊中修復的。Spring使用了非檢查異常,而不是強制開發人員編寫catch代碼塊(裏面經常是空的)。
爲了利用Spring的數據訪問異常,就需要使用Spring所提供的數據訪問模板。
2.數據訪問模板化
模板方法定義了過程的主要框架。
模板方法將過程中與特定實現相關的部分委託給接口,而這個接口的不同實現定義了過程中的具體行爲。
Spring將數據訪問過程中固定的和可變的部分明確劃分爲兩個不同的類:模板和回調。模板管理過程中固定的部分,而回調處理自定義的數據訪問代碼。

模板類(org.springframework.*) 用途
jdbc.core.JdbcTemplate JDBC連接
jdbc.core.simple.SimpleJdbcTemplate 通過java5簡化後的JDBC連接
orm.hibernate3.HibernateTemplate Hibernate 3.x的Session
orm.jpa.JpaTemplate Java持久化API的實體管理器

使用數據訪問模板只需將其配置爲Spring上下文中的Bean並將其織入到應用程序的DAO中。或者,你還可以使用Spring的DAO支持類進一步簡化應用程序的DAO配置。
3.使用DAO支持類
當編寫應用程序自己的DAO實現時,可以繼承自DAO支持類並調用模板獲取方法來直接訪問底層的數據訪問模板。
另外,如果你需要訪問底層的持久化平臺,則每個DAO支持類都能夠訪問其與數據庫進行通信的類。

DAO支持類(org.springframework.*) 爲誰提供DAO支持
jdbc.core.support.JdbcDaoSupport JDBC連接
jdbc.core.simple.SimpleJdbcDaoSupport 通過java5簡化後的JDBC連接
orm.hibernate3.support.HibernateDaoSupport Hibernate 3.x的Session
orm.jpa.support.JpaDaoSupport Java持久化API的實體管理器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章