【发布时间】:2011-06-16 20:45:38
【问题描述】:
当使用连接池时, 将设置连接的自动提交 = false 只影响这个连接?
如果我关闭此连接而不设置 autocommit = true 并获得一个新的连接,这个连接的策略是否设置为 autocommit=true?
【问题讨论】:
标签: mysql jdbc connection-pooling autocommit
当使用连接池时, 将设置连接的自动提交 = false 只影响这个连接?
如果我关闭此连接而不设置 autocommit = true 并获得一个新的连接,这个连接的策略是否设置为 autocommit=true?
【问题讨论】:
标签: mysql jdbc connection-pooling autocommit
答案应该是:“取决于使用的连接池”。
但是,如果我是一个连接池,我会按照初始配置恢复自动提交状态。我认为其他连接池也会这样做。
【讨论】:
测试场景:
结果:当这个特定的连接被重用时,它仍然有 autocommit=false(其他新的连接有默认的 autocommit=true)。因此,一旦我在数据库端终止 this 连接并再次调用我的代码,池才会为我提供默认自动提交 = true 的新连接。
结论:它只影响 this 连接,但请确保在关闭之前将其设置回 autocommit=true! (这是基于真实测试,而非假设)
注意:这里也注明了这种行为:http://www.coderanch.com/t/583969/JDBC/databases/Tomcat-connection-pool-auto-commit
我在 Tomcat7、Java 1.7、MySQL5.6、Connector/J 5.1 中使用 JDBC。
【讨论】: