SpringInAction研學記錄-第5、6章

第五章

dao應該以接口的方式發(fā)布功能,而應用程序的其他部分通過接口來訪問dao,實現(xiàn)代碼的松散耦合

數(shù)據(jù)訪問層是以持久化技術(shù)無關的方式來進行訪問的。持久化方式的選擇獨立于dao層,只有相關的數(shù)據(jù)訪問方法通過接口來發(fā)布供其他應用程序來調(diào)用。這樣靈活的設計即使切換到其他的持久化框架后也能對系統(tǒng)產(chǎn)生較小的影響

spring框架提供了與持久化平臺無關的持久化異常。簡單來說就是無論使用了哪種持久化框架,spring如果兼容它,那么就會將對應的持久化平臺的異常統(tǒng)一地“翻譯”為spring中的一套持久化異常體系。其中,這些異常都繼承自DataAccessException類

spring在數(shù)據(jù)訪問層采用了模板化思想,使用了設計模式:模板方法模式

模板方法定義了過程得主要框架。它將過程中與特定實現(xiàn)相關的部分委托給接口,而這個接口得不同實現(xiàn)定義了過程中的具體行為

spring將數(shù)據(jù)訪問過程中固定的部分,稱為模板(如繼承了spring的dao基類后,開閉數(shù)據(jù)庫連接的操作框架將會處理,無需手動干預);將可變的部分,稱為回調(diào)(如繼承了spring的dao基類后,需要自己實現(xiàn)的自定義方法)。這種設計方式,被稱為:模板-回調(diào)設計

spring支持3種形式的數(shù)據(jù)源:jdbc驅(qū)動定義、jndi查找和連接池

在spring中:

jdbc驅(qū)動定義的數(shù)據(jù)源是最簡單的定義方式。由于不支持多線程程序,且只有一個數(shù)據(jù)連接對象,每次都會新創(chuàng)建數(shù)據(jù)連接對象,開銷大,不推薦使用

jndi需要在服務器上查找數(shù)據(jù)源配置,可以在應用程序之外管理數(shù)據(jù)源,獲得更好的性能

連接池一般通過dbcp三方連接池實現(xiàn)驅(qū)動。BasicDataSource類是最常用的數(shù)據(jù)連接bean,它類似于jdbc驅(qū)動定義中的DriverManagerDataSource類(每次請求都會創(chuàng)建一個新連接對象)

持久化到數(shù)據(jù)庫時定義的業(yè)務對象,一開始是遵循ejb規(guī)范中的ejb的,因為比較重量級,近年來已經(jīng)從ejb切換到pojo開發(fā)模式中來了(即現(xiàn)在通常所稱的po、entity等dao層的業(yè)務持久化Java對象)


總結(jié):

對為什么dao要設計成接口有了更深的理解

spring對于數(shù)據(jù)持久層的設計應用了模板方法的設計模式

一般開發(fā)時的數(shù)據(jù)源使用連接池,可以復用,統(tǒng)一動態(tài)分配和管理,節(jié)約資源

第六章

全有或全無的操作,稱為事務。它是一個期望全發(fā)生或全部不發(fā)生的工作單元,保證數(shù)據(jù)的完整性

事務的acid特性:原子性、一致性、隔離性和持久性

spring提供了編碼式和聲明式事務的支持:

編碼式事務:

優(yōu)點:能通過代碼精確地控制事務邊界

缺點:侵入性實現(xiàn)

聲明式事務:

通過spring aop方式實現(xiàn)

優(yōu)點:由于應用在方法級別,可維護性較高

缺點:粒度沒有編碼式事務那么細

spring不直接管理事務,它是通過提供的多種事務管理器來實現(xiàn)事務的。spring為每個持久化框架提供的事務管理器都不同,需要有選擇地使用

事務的屬性:傳播行為、隔離級別、只讀、事務超時和回滾規(guī)則

<tx:annotation-driven>元素用于開啟注解式事務配置。它來告訴spring檢查應用上下文所有以@Transaction注解的bean


總結(jié):

進一步明確了事務的5個屬性。如隔離級別中的若干項需要根據(jù)實際業(yè)務進行取舍,選擇最合適的隔離級別

了解了spring支持兩種事務的實現(xiàn)方式:編碼式事務和聲明式事務。且聲明式事務是通過spring aop來實現(xiàn)的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容