java连接池和自动提交状态

问题描述

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

解决方法

行为正常的连接池应始终以相同的干净状态返回连接。假设 JDBC 规范中指定了默认值,其中连接没有未完成的事务并且处于自动提交模式。

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

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

默认情况下,DBCP 将在返回连接(设置 setAutoCommit(true))和回滚未完成的事务(设置 enableAutoCommitOnReturn)时调用 rollbackOnReturn。另见BasicDataSource Configuration Parameters