在BoneCP中关闭连接

问题描述:

我们有BoneCP库管理我们的连接池。我想知道下面的语句是否会将连接返回到池中。在BoneCP中关闭连接

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

上述代码是否会关闭连接并将连接放回池中?

更新:

我问这个问题,因为当我的ConnectionPool运行统计数据,我仍然看到一个显示正在使用2个连接的conPool.getTotalLeased()。但是,我已经使用上述机制关闭了连接。

池的整体意义是保持已建立的连接到您的数据库。当您从池中检索连接时,可节省连接数据库的时间。

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

当您关闭连接时,它只会返回到池并标记为可供您下次检索。

+0

你是说,即使我调用close()的连接,在getTotalLeased()仍然会显示为如果正在使用的连接? \ – Zeus 2014-09-10 18:08:56

+1

它取决于池的实现,但基本上获得真正连接的包装,并且close方法正在发信号通知已释放连接的池。 – Hannes 2014-09-10 19:24:36

是的,它确实将连接移回池中。从池中获取连接时发生错误,修复了它,现在我在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;