工作记录------手动事务开启TransactionDefinition
手动事务开启的好处在于:能够由程序员控制事务的范围
坏处:由程序员控制就可能人为粗心或者不细致导致的各种问题,比如说发生异常时,没有回滚或者关闭
实例代码:
// 手动开启事务 start
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
// 设置事务的传播属性PROPAGATION_REQUIRES_NEW
// 意思是不管当前是否有事务,都创建一个新事物
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus status = txManager.getTransaction(def);
try {
// 具体的执行逻辑
int flag = this.add(..);
// 手动提交事务
txManager.commit(status);
if (i > 0) {
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}
} catch(Exception e) {
// 异常流程
// 手动回滚事务
txManager.rollback(status);
}
}
注意点
使用手动式事务,一定要注意异常时,对事物的回滚。非则会导致事务一致没有关闭,造成死锁