spring 源碼分析 平臺事務管理

AOP 事務對象 (PlatformTransactionManager)

PlatformTranscationManager 平臺事務管理作爲事務的通用 API 處理。
提供三個方法:

1、根據事務定義創建事務狀態

TransactionStatus getTransaction (TransactionDefinition definition) ;

2、根據事務狀態執行事務提交

void commit(TransactionStatus status);

3、根據事務狀態執行事務回滾

void rollback(TransactionStatus status);

平臺抽象層 AbstractPlatformTransactionManagerPlatformTranscationManager 接口方法進行了實現。並延伸了4個抽象方法 doGetTransaction()doBegin()doCommit()doRollback()… 等抽象方法。


DataSourceTransactionManager 分析

數據源事務管理, 繼承抽象平臺事務管理器. 封裝着 DataSource 對象. 實現平臺抽象層方法。

一、doGetTransaction()

1、創建 DataSourceTransactionObject 對象。 其主要操作的就是 java.sql.Connection 連接,通過創建保存點(java.sql.Savepoint)、回滾保存點、釋放保存點.
2、創建 ConnectionHolder 數據庫連接對象持有者,並設置給 DataSourceTransactionObject 對象

二、doBegin(DataSourceTransactionObject, TransactionDefinition)

1、將資源標記爲與事務同步,獲取 Connection 連接對象
2、獲取早先的隔離級別,設置給 DataSourceTransactionObject
3、檢索此 連接 對象的當前自動提交模式
4、在事務開始後立即準備事務 Connection,設置事務已開啓
5、設置超時時間

三、doCommit(DefaultTransactionStatus)

1、通過 DefaultTransactionStatus 得到 DataSourceTransactionObject 對象獲取 ConnectionHolder 連接持有者中 Connection 提交事務

四、doRollback(DefaultTransactionStatus)

1、通過 DefaultTransactionStatus 得到 DataSourceTransactionObject 對象獲取 ConnectionHolder 連接持有者中 Connection 回滾事務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章