对于类似于此的代码,
try{
Connection con =....
Statement stmt = ....
ResultSet set = ...
}
catch(Exception e){
...
}
finally {
con.close();
}假设连接转到一个连接池:
当调用con.close()时,它会转到连接池并保持活动状态。在某一时刻,这些连接会关闭,对吧?在这种情况下,我们是否需要关闭结果集和stmt对象,因为连接最终会关闭?
此外,是否会出现仍然使用stmt/result set对象并导致连接池中的连接未关闭的情况?
发布于 2014-03-06 21:00:24
建议在不再需要的时候尽快释放资源。
最简单的方法是使用新的try-with-resources特性(JavaSE7)。
发布于 2014-03-06 21:08:15
当您使用连接池时,Connection.close()调用将把连接放回到池中。当您调用Connection.close()时,Statement对象将被移除。但是,AFAIK,您必须关闭ResultSet对象以显式地将其从服务器中清除。这是一个很好的方法,总是显式地关闭ResultSet,Statement,而不是依赖于Connection.close().Adding,如果你选择Spring JDBC,它将负责管理JDBC资源。您不必担心关闭连接、语句和结果集。此外,从Statement API -当一个Statement对象被关闭时,它的当前ResultSet对象(如果存在的话)也被关闭。
https://stackoverflow.com/questions/22225074
复制相似问题