使用连接池时, 会设置连接的autocommit = false 只影响此连接吗?jdbc是否会自动提交影响所有连接?
如果我关闭此连接而未设置autocommit = true 并获得新连接,则将此连接的策略设置为autocommit = true?
使用连接池时, 会设置连接的autocommit = false 只影响此连接吗?jdbc是否会自动提交影响所有连接?
如果我关闭此连接而未设置autocommit = true 并获得新连接,则将此连接的策略设置为autocommit = true?
答案就是:“取决于所使用的连接池”。
但是,如果我是一个连接池,我将根据初始配置恢复自动提交状态。我认为其他连接池也会这样做。
测试场景:
结果:当此特定连接被重用,它仍然有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。