2

使用连接池时,设置连接的 autocommit = false 是否仅影响此连接?

如果我在未设置 autocommit = true 的情况下关闭此连接并获得新连接,此连接的策略是否会设置为 autocommit = true?

4

2 回答 2

2

答案应该是:“取决于使用的连接池”。

但是,如果我是一个连接池,我会按照初始配置恢复自动提交状态。我认为其他连接池也会这样做。

于 2011-01-27T23:13:53.383 回答
0

测试场景:

  1. 设置自动提交=假
  2. 使用事务
  3. 关闭连接而不将其设置回 autocommit=true

结果:当这个特定的连接被重用时,它仍然有autocommit=false(其他新的连接有默认的autocommit=true)。所以,一旦我在数据库端终止了这个连接并再次调用我的代码,只有到那时池才给我一个新的连接,默认的 autocommit=true。

结论:它仅影响连接,但请确保在关闭之前将其设置回 autocommit=true!(这是基于真实测试,不是假设)

注意:这里也注意到了这种行为:http: //www.coderanch.com/t/583969/JDBC/databases/Tomcat-connection-pool-auto-commit

我将 JDBC 与 Tomcat7、Java 1.7、MySQL5.6、Connector/J 5.1 一起使用。

于 2015-03-05T08:00:06.513 回答