本文主要是介绍Spring Tx 之“PlatformTransactionManager“的编程式事务分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在平常的工作会这样写一个模板事务,使用PlatformTransactionManager.getTransaction
创建并开启一个事务;
在try{}catch{}finally{}
块中处理事务的提交、异常回滚等。
示例代码:
@Service
public class demo{@Resource()PlatformTransactionManager transactionManager;public int insert(Product product,ProdutExt ext){TransactionStatus ts = transactionManager.getTransaction(new DefaultTransactionDefinition());try {//TODO 数据库操作transactionManager.commit(ts);}catch(Exception e){//异常时回滚transactionManager.rollback(ts);throw e;}finally {//如果事务没有处理,默认进行回滚if (!ts.isCompleted()) {transactionManager.rollback(ts);}}}
}
思前思后,一层一层扒下它的外纱,一层一层的看PlatformTransactionManager
是如何管理事务的开启、提交与回滚的。
前述
在Spring-TX
模块中有三个重要的接口:
PlatformTransactionManager 事务管理器
TransactionStatus 事务状态
TransactionDefinition 事务定义
各类之间的类图:
PlatformTransactionManager
用于整个事务的创建、开启、提交、回滚操作;事务的定义由TransactionDefinition
定义事务的隔离级别;TransactionStatus
用于对新创建的事务进行管理。
PlatformTransactionManager 事务管理器
PlatformTransactionManager
继承自TransactionManager
接口,TransactionManager
接口的作用只是用于标示类,没有任务的接口方法与字段;AbstractPlatformTransactionManager
对PlatformTransactionManager
进行了抽象,对方法进行了具体的实现;下面我们来看看源代码是什么样的吧。
PlatformTransactionManager
interface源代码:
public interface PlatformTransactionManager extends TransactionManager {//1.创建一个事务并开启事务TransactionStatus getTransaction(@Nullable TransactionDefinition definition)throws TransactionException;//2.提交事务void commit(TransactionStatus status) throws TransactionException;//3.回滚事务void rollback(TransactionStatus status) throws TransactionException;}
如果实现getTransaction()
使用JDBC将如果开启一个事务呢?
//创建一个连接
JdbcConnection connection = ConnectionImpl<
这篇关于Spring Tx 之“PlatformTransactionManager“的编程式事务分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!