在构造函数中打开数据库连接,何时应该关闭它?

时间:2012-05-29 11:31:22

标签: java database-connection destructor

好吧,只要正在使用该对象,我一直在考虑通过保持与数据库的连接打开来使数据库请求更快一些。所以我想在该类的构造函数中打开连接。 现在的问题是,我停止使用后如何关闭连接?我必须在某处调用close(),不是吗? 我一直在阅读关于finalize()方法,但人们似乎对任何地方使用这种方法持怀疑态度。我希望它有类似析构函数的东西,但是Java没有那个,所以呢?

那么有人能为我提供解决方案吗?提前谢谢。

2 个答案:

答案 0 :(得分:4)

我建议让你的班级成为java.io.Closeable的实施者。根据此接口,您必须实现void close() throws IOException,该类的所有客户端都将调用它,因为在使用后关闭Closeable类是一种很好的做法。

答案 1 :(得分:4)

如果应用程序允许,我建议您更好地实现数据库连接池。使用连接池,将创建连接池并保持与数据库的连接。然后,您的应用程序将从池中获取打开/未使用的连接,并使用它并将其返回池中。

这将允许您更快地获取连接,并且您不必过多地修改类。如果您需要扩展应用程序,数据库连接池是一种很好的技术。

另一个好处是您的数据库连接池将由某种驱动程序管理,该驱动程序将负责打开连接,保持打开连接,在需要时增加池,并在不使用额外连接时缩小池。一定的时间。这与您尝试在构造函数和终结方法中实现的代码类似。

一般来说,您只在需要时才会获取数据库连接,并尽快将其释放。