2014-09-10 84 views
0

我們有BoneCP庫管理我們的連接池。我想知道下面的語句是否會將連接返回到池中。在BoneCP中關閉連接

statement = conn.createStatement(); 
.... 
lots of code. 
.... 
Connection conn = statement.getConnection(); 
statement.close(); 
conn.close(); 

上述代碼是否會關閉連接並將連接放回池中?

更新:

我問這個問題,因爲當我的ConnectionPool運行統計數據,我仍然看到一個顯示正在使用2個連接的conPool.getTotalLeased()。但是,我已經使用上述機制關閉了連接。

回答

1

池的整體意義是保持已建立的連接到您的數據庫。當您從池中檢索連接時,可節省連接數據庫的時間。

你所看到的是水池持有你的連接,所以它都很好。

當您關閉連接時,它只會返回到池並標記爲可供您下次檢索。

+0

你是說,即使我調用close()的連接,在getTotalLeased()仍然會顯示爲如果正在使用的連接? \ – Zeus 2014-09-10 18:08:56

+1

它取決於池的實現,但基本上獲得真正連接的包裝,並且close方法正在發信號通知已釋放連接的池。 – Hannes 2014-09-10 19:24:36

0

是的,它確實將連接移回池中。從池中獲取連接時發生錯誤,修復了它,現在我在totalLeased()方法中看不到2個連接。

的錯誤,我發現

conPool.getConnection(); // loitering connection which we see in the getTotalLeased(); 
.. 
Statement st = conPool.getConnection().getStatement(); //we have handle to this connection. 
return st;