AOP 事務對象 (PlatformTransactionManager)
PlatformTranscationManager
平臺事務管理作爲事務的通用 API 處理。
提供三個方法:
1、根據事務定義創建事務狀態
TransactionStatus getTransaction (TransactionDefinition definition) ;
2、根據事務狀態執行事務提交
void commit(TransactionStatus status);
3、根據事務狀態執行事務回滾
void rollback(TransactionStatus status);
平臺抽象層 AbstractPlatformTransactionManager
對 PlatformTranscationManager
接口方法進行了實現。並延伸了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
回滾事務