何时打开和关闭与DB的连接

时间:2016-04-20 17:04:37

标签: sql postgresql java-ee connection

我在Java EE中进行编码,我有一些类可以管理我的数据库的所有操作。

我问自己应该何时打开/关闭与DB的连接。

在每种方法中打开和关闭它会更好吗? 或者最好在构造函数中打开它并在我使用我的类时关闭它?

THX

2 个答案:

答案 0 :(得分:1)

没有通用解决方案。所有决定都取决于具体任务。你应该记住下一件事:

  1. 每次连接数据库都是应用程序时间。如果您的方法过于频繁地调用,您的应用程序将浪费大量时间来连接和断开任务以及更慢的网络。如果很少打电话,那就不那么重要了;
  2. 如果您的方法长时间连接到构造函数中的数据库而没有任何操作,则可能会删除连接。这不是必需的,但可能导致网络问题或数据库连接策略。因此,在使用select 'some random text' from dual;
  3. 等快速简单的操作检查每个查询之前
  4. 数据库资源不是无限的,连接总数是有限的。这个限制可能非常大,但它仍然存在。因此,如果您的应用程序可以并行使用几次(饥饿,数千次),则可能会通过永久连接达到极限。
  5. 如果您没有将来使用方法的信息,我建议使用时间限制的永久连接。如果方法没有通过此连接查询一段时间(如3-5秒),则应该使用第一个查询打开并使用计时器关闭。当然,任何查询者都应该在查询之前检查连接状态。打开它,如果它关闭,触摸关闭计时器。并且不要忘记在析构函数中显式关闭连接。

答案 1 :(得分:1)

我认为你不应该在代码中管理它。我工作的每个EE服务器都有连接池,无需你关心它。基本上,当您需要时“打开”连接,并在需要时“关闭”它。这些单词在引号中,因为当连接真正打开和关闭时,它由池来管理。

从设计角度来看,只有在需要时才使用连接。对象构造没有意义 - 如果类中的方法没有被调用一小时怎么办?当你不需要它时打开它的目的是什么?因此,如果方法需要打开连接并在方法中关闭它。