2016-07-26 72 views
1

我試圖在舊系統中使用HikarCP。我配置了自動提交到假的,這是我們想要的東西,並意識到我的日誌充滿HikariCP:SELECT查詢由於關閉時執行髒提交狀態而執行回退()

[c.z.h.p.ProxyConnection][ProxyConnection.java:232] ora - Executed rollback on connection [email protected] due to dirty commit state on close(). 

當從池中獲取一個連接發出Finder查詢後關閉發生這種情況。在連接的整個過程中不會發生插入/更新/刪除操作。這是如何應該爲選擇查詢?每次選擇後我應該做一個COMMIT嗎?

回答

1

是的,你應該提交。即使SELECT查詢啓動事務並獲取鎖定。特別是對於不同的隔離級別,即使使用TRANSACTION_READ_COMMITTED,也依賴於數據庫。

HikariCP將自動提交時的非顯式提交視爲false作爲應用程序錯誤。其他一些池支持配置「commit-on-close」,但HikariCP認爲這種風險很高,並且支持從未正確編寫的應用程序。

對於沒有自動提交的Connection是否應該自動提交或回滾,JDBC規範明確地保持沉默。這是驅動程序開發人員留下的實現細節。