[英]Closing a DB connection in Java
这只是Java程序员的愚蠢说法。 我有类似的东西
PreparedStatement stmt = DBConnection.getConnection()
.prepareStatement(sql);
现在在finally块中,检查stmt是否存在,然后将其关闭。 在这种情况下, Connection
对象将发生什么。 我知道如果我用单独的行写,那么我可以关闭它,因为我有对连接对象的引用,在这种情况下我没有。
在这种情况下,
Connection
对象将发生什么。
没有。 没有魔术,因此连接没有魔术关闭,只是因为您没有将其分配给变量。
这就是为什么对Connection
使用单独的变量的原因:因此可以调用close()
! 或使用try-with-resources:
try (Connection connection = DBConnection.getConnection()) {
PreparedStatement stmt = connection.prepareStatement(sql);
}
连接将保持打开状态,直到将来某个时候对其进行垃圾回收为止。
但是,对于连接池,可能不是您对连接的唯一引用(如果该池还维护对已借用连接的引用)。 在这种情况下,将不会进行垃圾收集,并且不会关闭垃圾收集。 它会从池中“泄漏”,最终可能会导致池用尽,并且不再有可用的连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.