2011-01-27 59 views
1

使用连接池时, 会设置连接的autocommit = false 只影响此连接吗?jdbc是否会自动提交影响所有连接?

如果我关闭此连接而未设置autocommit = true 并获得新连接,则将此连接的策略设置为autocommit = true?

回答

1

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

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

0

测试场景:

  1. 一套自动提交=假
  2. 使用交易
  3. 关闭连接不设置回自动提交=真正

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

结论:它只影响这个连接,但确保在关闭之前将其设置回autocommit = true! (这是根据实际测试,而不是假设)

注:本beahvior过这里要注意:http://www.coderanch.com/t/583969/JDBC/databases/Tomcat-connection-pool-auto-commit

我使用JDBC与Tomcat7,爪哇1.7,MySQL5.6,连接器/ J 5.1。