gpt4 book ai didi

java - spring 事务期间 autocommit=true

转载 作者:行者123 更新时间:2023-12-02 03:06:30 25 4
gpt4 key购买 nike

试图理解事务...我正在使用 Spring 的 JdbcTemplate@Transactional方法中的注释。尽管事务在方法执行期间处于 Activity 状态(如日志和 TransactionSynchronizationManager.isActualTransactionActive()) 所示),但自动提交似乎也已打开(如 jdbcTemplate.getDataSource().getConnection().getAutoCommit()) 所示)。

有两件事我不明白

  • jdbc 事务的想法不是关闭自动提交并在代码块末尾手动提交吗? Spring 事务管理器不应该在幕后做类似的事情吗?
  • 如果自动提交确实开启:如果对数据库的一项修改成功,而后续修改失败,Spring 如何回滚之前的更改(尽管有自动提交值,但它确实会回滚)?

最佳答案

如果处理了 DataSourceTransactionManagerdoBegin() 方法,则处理该标志。

https://docs.spring.io/spring/docs/2.5.x/javadoc-api/org/springframework/jdbc/datasource/DataSourceTransactionManager.html#doBegin(java.lang.Object,%20org.springframework.transaction.TransactionDefinition)

如果你看一下来源,就会发现:

if (con.getAutoCommit()) {
...
con.setAutoCommit(假);
}

关于java - spring 事务期间 autocommit=true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41637836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com