0

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

4

1 回答 1

1

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

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

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

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

于 2021-03-03T16:42:09.463 回答