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
回滚事务