java 连接池和自动提交状态

java connection pool and autocommit status

我找不到答案的小问题。如果您有一个连接池,其中某些连接可能已设置为 autocommit false。如果那些被返回并从池中检索。 autocommit 是否设置回 true(默认值)?还是我可以在一种模式或另一种模式下建立一些联系?

一个正常运行的连接池应该总是 return 连接处于相同的干净状态。其中,假设在 JDBC 规范中指定了默认值,则连接没有未完成的事务并且处于自动提交模式。

然而,从历史上看,这有点混乱,当连接 returned 到池中时,一些连接池不会回滚未完成的事务,也不会重置当前的自动提交模式,或者他们需要明确配置才能这样做。有些人这样做是出于性能原因,但从纯粹的 JDBC 角度来看,这种行为是不正确的。

始终建议检查文档并验证(测试)数据源的行为,而不是盲目地依赖假设。

DBCP 默认会在连接 returned(设置 enableAutoCommitOnReturn)时调用 setAutoCommit(true) 并回滚未完成的事务(设置 rollbackOnReturn)。另见 BasicDataSource Configuration Parameters