0
我正在使用連接池和Spring TransactionTemplate
。如果要首先關閉連接池,則必須將所有連接返回到池中,這意味着必須調用connection.close()
。我有一個線程使用TransactionTemplate
進行某些查詢,另一個線程想要在連接池上調用某種關閉方法,但在執行此操作之前,首先必須告知TransactionTemplate
關閉所有連接(實際上只將它們返回給池)。用Spring TransactionTemplate取消當前事務
在Spring中如何做到這一點,以立即調用關閉使用的連接?
我正在直接使用TransactionTemplate,沒有其他框架。 Mycode - > Spring事務 - > JDBC - >數據庫Hibernate是否將這些設置轉換爲Spring框架中的某些調用? –
我想你正在使用DataSourceTransactionManager。它是這樣工作的。如果你在你的TransactionTemplate對象上調用commit,它將委託給它的transactionManager實現。無論發生什麼,DataSourceTransactionManager實現將最終清理事務。一個人認爲清理是連接釋放。如果你在日誌中輸入「debug」(org.springframework.jdbc package)級別,你會看到你的連接在成功提交後被釋放。如果您的數據源正在實施SmartDataSource,則連接將不會關閉。 – goroncy
是的,謝謝,我知道。也許我的問題並不清楚:即使交易仍在運行,我想關閉連接。選項1將在linux中使用「kill」,或者在java中使用System.exit(0),但是數據庫中有大量從連接池創建的未決連接。在退出程序之前,所有連接都應被強制關閉。我不能等待交易結束。我想要一些激進的接近呼叫。 –