编程式事务(Programmatic Transaction)是一种通过代码显式地管理事务的方式,而不是依赖声明式事务(Declarative Transaction)中使用的注解或 XML 配置。在编程式事务中,开发人员通过编写代码来开启、提交和回滚事务,以精细控制事务的边界和行为。
使用
TransactionTemplate
是一个简化了事务管理的工具类,可以避免直接处理 TransactionStatus
。
@Service
public class MyService {
@Resource
private TransactionTemplate transactionTemplate;
@Resource
private MyMapper myMapper;
public void myTransactionalMethod() {
transactionTemplate.execute(status -> {
try {
// 业务逻辑代码
myMapper.insertSomething(...);
} catch (Exception ex) {
status.setRollbackOnly(); // 标记事务为回滚
throw ex; // 重新抛出异常
}
return null;
});
}
}