Spring in Action 學習筆記—第四章 征服資料庫

來源:互聯網
上載者:User

Spring in Action 學習筆記第四章 征服資料庫

 

先是一個好訊息,在2006年國慶期間,Spring2.0正式版(http://www.springframework.org/download )和Spring2.0中文文檔(http://spring.jactiongroup.net/viewtopic.php?t=2279&sid=0906ae6a913537b249e501db5b54c181 )終於發布了。

在前面的學習之後,我們已經瞭解了Spring架構的核心,在本章中作者向我們講述了Spring的持久化層,向我們介紹了Srping對JDBC的支援。還向讀者介紹了Spring如何與當前流行的一些ORM架構,如Hibernate、JDO、OJB、和iBATIS等整合。

 

一、學習SpringDAO理念

DAO代表Data Access Objects(Data Access Object)。它完美地描述了在一個應用中DAO的角色。DAO的存在提供了讀寫資料庫中資料的一種方法。只要把這個功能通過介面暴露,應用的其他部分就可以通過這個介面來訪問資料庫了。下圖展示了設計資料訪問層的合適途徑:

 

如上圖所示,服務物件不再和特定的資料訪問實現邦定在一起,使得他們易於測試。此外,我們是通過與持久化技術無關的方式來訪問資料訪問層的,DAO介面不需要暴露他採用什麼技術去訪問資料。Spring幫你把資料訪問層從應用的其他部分隔離開來的一種方法是:提供一套貫穿整個DAO架構的一致的分級異常體系。

1.理解Spring的DataAccessException

Spring的DAO架構沒有拋出與特定技術相關的異常,Spring提供了一種方便的方法,把特定於某種技術的異常,如SQLException,轉化為自己的異常,這種異常屬於以DataAccessException為異常層次。

DataAccessException是RuntimeException,所以它是一個無需檢測的異常。意思是說,當他們被資料訪問層拋出時,並不需要你的代碼去處理這類異常。這遵循了Spring的一般理念:異常檢查會使你的代碼到處是不相關的catch或throws語句,使代碼雜亂無章。對資料訪問異常來說,這點尤為正確,因為我們在寫串連資料庫和操作資料庫表的代碼中,總是充斥著大量的異常。

    一般情況下,我們的資料庫訪問API總是要拋出一個有意義的異常。JDO有它自己的異常層次。下圖是Spring2.0中定義的異常層次。

上圖所包括的異常類只是整個龐大的DataAccessException異常層次中的一部分。

2.一致的DAO支援

不管我們採用什麼技術,某些資料庫訪問的步驟是必須的。如資料庫連接,操作,操作完後釋放串連。這些都是固定步驟。Spring把資料庫訪問流程中的固定部分和可變部分分開,分別映射成兩個截然不同的類:模板(Template)和回調(Callback)。範本管理員流程的固定部分,而在回調處填寫實現細節。如下圖所示:

在上圖中Spring的模板類處理資料訪問的不變部分—事務控制、資源管理以及異常處理。回調介面的實現定義了特定於應用的部分—建立statement,邦定參數以及整理結果集(ResultSet)。這樣我們只需要關心資料訪問的邏輯就可以了。

為了便於以一種一致的方式使用各種資料庫訪問技術,如JDBC、JDO和Hibernate,Spring提供了一套抽象DAO類供我們進行擴充。這些抽象類別提供了一些方法,通過它們我們可以獲得與當前資料訪問技術相關的資料來源和其他配製資訊。

這些類是:

l         JdbcDaoSupport – JDBCData Access Objects的基類。

l         HibernateDaoSupport – HibernateData Access Objects的基類。

l         JdoDaoSupport – JDOData Access Objects的基類。

l         JpaDaoSupport – JPA資料訪問的基類。

對於以上四個類,更詳細的內容請參看Spring2.0第十章。

 

二、在Spring中使用JDBC

起初我們在使用Java串連資料庫時候都使用的是JDBC,剛開始可能是對資料庫表作一個操作就會串連一次資料庫,然後再將資料庫連接關閉。大概是這樣的步驟:串連資料庫-- 對某表進行操作—關閉資料庫,後來一些人對資料庫的操作進行了封裝,將資料庫的串連操作關閉等動作放到一個類中(http://blog.csdn.net/qutr/archive/2006/09/25/1274826.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.