我正在尝试在遗留系统中使用HikarCP。我将autocommit配置为false,这就是我们想要的,并意识到我的日志已经填满了
[c.z.h.p.ProxyConnection][ProxyConnection.java:232] ora - Executed rollback on connection net.sf.log4jdbc.ConnectionSpy@3f2bba67 due to dirty commit state on close().
在发出查找程序查询后关闭从池中获取的连接时,会发生这种情况。在连接的生命周期内没有插入/更新/删除。这是选择查询应该如何?我应该在每次选择后做一个COMMIT吗?
答案 0 :(得分:2)
是的,你应该承诺。甚至SELECT查询也会启动事务并获取锁。特别是具有各种隔离级别,甚至使用TRANSACTION_READ_COMMITTED依赖于数据库。
当autocommit为 false 时,HikariCP会将非显式提交视为应用程序错误。其他一些池支持配置" commit-on-close"但是HikariCP认为存在风险,并且支持从未正确编写的应用程序。
对于没有自动提交的Connection是自动提交还是回滚,JDBC规范是显式静默的。这是驱动程序开发人员留下的一个实现细节。