如果自动提交为 true,@Transactional 注释是否有效?

问题描述 投票:0回答:2

如果打开自动提交,回滚会起作用吗?如果不是,那么关闭自动提交有何影响?

@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);
    }
}
java spring spring-mvc
2个回答
3
投票

是的。如果你检查代码,你会发现,当spring使用这种方式来做事务时。如果您的配置是自动提交为 true,那么它会将其更改为 false,并且在事务完成后会将其更改为 true。


0
投票

在 springboot jpa 等框架中使用事务注释会改变自动提交行为,因为此功能的设置可以在不同范围内(例如每个会话或全局),因此 springboot 应该使用事务注释来自行处理事务管理

© www.soinside.com 2019 - 2024. All rights reserved.