首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring @Transactional和JDBC autoCommit

Spring @Transactional和JDBC autoCommit
EN

Stack Overflow用户
提问于 2013-04-30 21:37:54
回答 1查看 19.4K关注 0票数 17

在我的实际应用程序中,我有一个没有设置JDBC autoCommit=false的DBCP连接池。它似乎有默认的autoCommit=true。这可能是一个错误,但我想了解更改此参数的影响。

我使用:- Spring with @Transactional - Spring Batch with JDBC readers and writers,最终使用JdbcTemplate自定义微线程

我想知道如果在TransactionManager处理的事务上下文中,Spring是否在当前连接上设置了autoCommit=false。它是否覆盖默认设置?因为在我看来,这样做是有意义的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-30 22:28:34

PlatformTransactionManager是一个接口,所以我不会断言所有的实现都设置了AutoCommit = false,但是最常见的实现(DataSourceTransactionManager)确实设置了AutoCommit = false。请参阅doBegin方法中的以下代码片段:

代码语言:javascript
复制
if (con.getAutoCommit()) {
            txObject.setMustRestoreAutoCommit(true);
            if (logger.isDebugEnabled()) {
                logger.debug("Switching JDBC Connection [" + con + "] to manual commit");
            }
            con.setAutoCommit(false);
        }
        txObject.getConnectionHolder().setTransactionActive(true);

现在,正如您所说的,这样做非常有意义,否则您将不会有一个回滚段来激活回滚。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16301315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档