使用Java时是否必须明确断开与数据库的连接?

时间:2009-10-20 18:28:40

标签: java database database-connection

在Java中完成作业后,必须断开与数据库的连接吗?如果未断开连接,是否会导致内存泄漏?

5 个答案:

答案 0 :(得分:6)

您必须始终关闭所有的Connections,Statements和ResultSet。

如果没有,则更有可能无法从池中获取新连接而不是内存泄漏。

答案 1 :(得分:4)

您应该提供更多详细信息,例如您正在使用的框架或其他内容。

无论如何,您使用的是JDBC吗?如果是这样,您应该使用各自的close()方法关闭以下对象:Statement,ResultSet和Connection。

答案 2 :(得分:3)

假设您使用的是JDBC,答案是肯定的。如果不关闭连接,则JDBC驱动程序可能会尝试在finallizer中关闭它,但这可能会使连接保持打开很长时间,从而导致资源问题(允许在一个数据库连接中打开数据库连接的数量)时间有限)。通常,JDBC编程是使用数据库池完成的,而不关闭连接意味着池将很快耗尽可用连接。

某些应用程序服务器(例如JBoss)将检测连接何时未关闭,并在管理事务时为您关闭,但您不应该依赖它。

当然,一些JDBC驱动程序不是纯粹的Java驱动程序,此时内存泄漏成为非常现实的可能性。

答案 3 :(得分:1)

我没有源代码,但我相信(如果我没记错的话,自从我触及JDBC以来已经有一段时间了),这取决于JDBC驱动程序的实现。您应该始终关闭连接并自行清理,因为并非所有JDBC驱动程序都会为您执行此操作(尽管有些人可能会这样做)。

这可以追溯到我想遵循的规则 - 如果我创建或打开某些内容,我有责任删除或关闭它。

答案 4 :(得分:-2)

是的,是的