如果打开自动提交,回滚会起作用吗?如果不是,那么关闭自动提交有何影响?
@Transactional(rollbackFor = {ManagerException.class})
public myMethod()....{
System.out.printLn(my_spring_stored_procedure.getDataSource()
.getConnection().getAutoCommit()) //true
....
try {
result = this.my_spring_stored_procedure.execute(params);
}catch(DataAccessException e){
throw new ManagerException(e);
}
}
是的。如果你检查代码,你会发现,当spring使用这种方式来做事务时。如果您的配置是自动提交为 true,那么它会将其更改为 false,并且在事务完成后会将其更改为 true。
在 springboot jpa 等框架中使用事务注释会改变自动提交行为,因为此功能的设置可以在不同范围内(例如每个会话或全局),因此 springboot 应该使用事务注释来自行处理事务管理