以下內容純屬個人扯淡,僅供參考,建議拜讀原著
讀後感
一、Spring概述
二、IOC
三、AOP
四、DAO
五、事務
第17章:有關事務的楔子
1、什麼是事務
事務的目的:以可控的方式對數據資源進行訪問的一組操作,而保證事務執行前後,數據資源所承載的系統始終處於正確狀態
1。ACID屬性
1)原子性-Automicity
一個事務所包含的操作是一個不可分割的整體
2)一致性-Consistency
數據資源在事務執行前後都要處於數據一致性狀態。其中數據一致性的問題有:
A:表示事務A,對應應用中某個線程對數據資源發起的一次事務訪問
B:表示事務B,對應另一個線程對數據資源發起一次事務訪問
髒讀:A更新User表username字段,但還未提交;此時B
3)隔離性-Isolation
規定各個事務之間相互影響的程度。當多個事務對一個數據資源併發訪問時,不同隔離級別決定了對該數據資源訪問的不同行爲。
Read Uncommitted
Read Committed
Repeatable Read
Serializable
所有事務操作必須依次按順序執行
可避免其他隔離級別的所有問題
性能最差
4)持久性-Durability
一旦事務操作成功提交,那麼對數據的變更將被記載且不可逆轉,因此需要通過冗餘存儲、多數據網絡備份等方式來保證
2。相關概念
1)Resouce Manager(RM)
負責存儲並管理系統數據資源的狀態。如:數據庫服務器、JMS消息服務器等
2)Transaction Processing Monitor(TPM / TP Monitor)
在分佈式事務場景中協調多個RM的事務處理,由特定的中間件充當,如:(JTA+JTS規範)應用服務器
3)Transaction Manager(TM)
TPM的核心模塊,直接負責多RM之間的事務處理協調工作,並提供事務界定、事務上下文傳播等功能接口
4)Application
以獨立形式存在的、或運行於容器中的應用,是事務邊界的觸發點。
3。事務分類
1)全局事務
也叫分佈式事務。若整個事務處理過程中有多個RM參與,那麼就需要有TPM採用兩階段提交協議(多方都需要回應正常,整個事務才提交生效)來保證整個事務的ACID屬性
me:當一個業務需要用到單個或多個應用服務去對多個數據庫進行事務操作,這個業務就需要使用全局事務。
2)局部事務
只有一個RM參與,如:只對一個數據庫進行更新、只向一個消息隊列發送消息
注意:判斷是全局事務還是局部事務,並非由系統中RM數量多少來決定,而是當前業務操作是否涉及了多個RM的事務操作
第18章:羣雄逐鹿下的Java事務管理
第19章:Spring事務王國的架構
第20章:使用Spring進行事務管理
1。編程式
2。聲明式
第21章:擴展篇
1、ThreadLocal
2、Strategy設計模式
爲什麼使用:本意是封裝一系列可以相互替換的算法邏輯。參考:策略模式原來這麼簡單!
3、JTA