我正在从BoneCP迁移到HikariCP。在BoneCP中,有以下选项:
# If true, issue a reset (rollback) on connection close in case client forgot it.
resetConnectionOnClose=true
在没有显式提交/回滚事务的情况下关闭连接时,HikariCP在这种情况下的行为是什么?我找不到等效的配置选项。
谢谢你, 闷气
答案 0 :(得分:1)
我在com.zaxxer.hikari.pool.ProxyConnection
的代码源中找到了答案。在close()
方法中,有以下代码:
if (this.isCommitStateDirty && !this.isAutoCommit) {
this.delegate.rollback();
this.lastAccess = ClockSource.currentTime();
LOGGER.debug("{} - Executed rollback on connection {} due to dirty commit state on close().", this.poolEntry.getPoolName(), this.delegate);
}
因此,如果您没有启用autoCommit
配置选项,并且没有显式提交/回滚,那么它将为您回滚。
答案 1 :(得分:0)
我没有检查,但基本上HikariPool调用了Connection的close
方法,所以这似乎取决于驱动程序的实现
强烈建议应用程序在调用close方法之前显式提交或回滚活动事务。如果调用close方法并且有活动事务,则结果是实现定义的。