连接池中的数据库连接

时间:2014-03-06 12:49:34

标签: java connection

对于类似的代码,

try{
Connection con =....
Statement stmt = ....
ResultSet set = ...
}
catch(Exception e){
...
}
finally {
con.close();
}

鉴于连接进入连接池:

调用con.close()时,它会进入连接池并保持活动状态。在某个时间点,这些连接是否正确关闭?在这种情况下,我们是否需要关闭结果集和stmt对象,因为连接最终会被关闭?

此外,是否存在可能仍在使用stmt / result set对象并导致连接池中的连接未关闭的情况?

2 个答案:

答案 0 :(得分:1)

建议在不再需要资源时立即释放资源。

最简单的方法是使用新的try-with-resources功能(Java SE 7)。

答案 1 :(得分:1)

使用连接池时,Connection.close()调用会将连接重新置于池中。致电Statement时,系统会移除Connection.close()个对象。但是,AFAIK,你必须关闭ResultSet对象以明确地从服务器清除它们。这是一种始终明确关闭ResultSetStatement而不依赖Connection.close()的好方法。除此之外,如果您选择Spring JDBC,它会照顾到管理JDBC资源。您不必担心关闭连接,语句和结果集。从Statement API - 添加,当Statement对象关闭时,其当前的ResultSet对象(如果存在)也将关闭