我们有BoneCP库来管理我们的连接池。我想知道以下语句是否会将连接返回池中。
statement = conn.createStatement();
....
lots of code.
....
Connection conn = statement.getConnection();
statement.close();
conn.close();
以上代码是否会关闭连接并将连接重新放回池中?
更新
我问这个问题,因为当我在连接池上运行统计信息时,我仍然看到conPool.getTotalLeased()显示正在使用2个连接。但是,我已经使用上述机制关闭了连接。
答案 0 :(得分:1)
整个池的意义在于保持已建立的与数据库的连接。从池中检索连接时,可以节省连接数据库的时间。
你所看到的是拥有你们连接的游泳池,所以一切都很好。
当您关闭连接时,它只会返回到池中并标记为可供下次检索。
答案 1 :(得分: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;