数据库连接应该始终保持打开状态,还是只在需要时打开?

2022-09-01 10:51:56

我有一个bukkit插件(minecraft),需要连接到数据库。

数据库连接应该一直保持打开状态,还是在需要时打开和关闭?


答案 1

数据库连接必须仅在需要时打开,并在完成所有必要的工作后关闭。代码示例:

  • 在 Java 7 之前:

      Connection con = null;
      try {
          con = ... //retrieve the database connection
          //do your work...
      } catch (SQLException e) {
          //handle the exception
      } finally {
          try {
              if (con != null) {
                  con.close();
              }
          } catch (SQLException shouldNotHandleMe) {
              //...
          }
      }
    
  • Java 7:

      try (Connection con = ...) {
      } catch (SQLException e) {
      }
      //no need to call Connection#close since now Connection interface extends Autocloseable
    

但是,由于手动打开数据库连接的成本太高,因此强烈建议使用数据库连接池,该连接池在 Java 中表示,带有 DataSource 接口。这将为您处理物理数据库连接,当您关闭它(即调用)时,物理数据库连接将处于睡眠模式并且仍然打开。Connection#close

相关问答:

处理数据库连接池的一些工具:


答案 2

取决于您的需求。

创建连接需要一些时间,因此,如果需要经常访问数据库,最好保持连接打开状态。此外,最好创建一个池,以便许多用户可以同时访问数据库(如果需要)。

如果您只需要几次使用此连接,则可能无法使其保持打开状态,但是当您想要访问数据库时,您将有延迟。所以我建议你做一个计时器,将连接打开一段时间(连接超时)。


推荐