跳到主要内容

编程式事务

编程式事务通过手动调用 TransactionManager 的方法来控制事务的开启、提交和回滚。

基本用法
TransactionManager txManager = ...;

TransactionStatus tranA = txManager.begin();
try {
// 执行业务逻辑
...
txManager.commit(tranA);
} catch (Throwable e) {
txManager.rollBack(tranA);
throw e;
}

通过 begin 方法的参数可以设置事务的 传播行为隔离级别

指定传播行为和隔离级别
TransactionStatus tranA = txManager.begin(
Propagation.REQUIRES_NEW, // 传播行为
Isolation.READ_COMMITTED // 隔离级别
);

也可以只指定传播行为(隔离级别使用默认值):

只指定传播行为
TransactionStatus tranA = txManager.begin(Propagation.REQUIRES_NEW);

获取事务管理器

方式 1:通过 TransactionHelper(同一 DataSource 共享实例)
DataSource dataSource = ...;
TransactionManager txManager = TransactionHelper.txManager(dataSource);
方式 2:直接创建 LocalTransactionManager
DataSource dataSource = ...;
TransactionManager txManager = new LocalTransactionManager(dataSource);
方式 3:通过依赖注入获取
public class TxExample {
// @Inject < Guice、Solon 和 Hasor
// @Resource or @Autowired < Spring
private TransactionManager txManager;
...
}
依赖注入方式使用请参考对应的文档