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

ama*_*207 26 java mysql jdbc bukkit

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

数据库连接是否应始终保持打开状态,还是在需要时打开和关闭?

Lui*_*oza 22

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

  • 在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) {
            //...
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • Java 7:

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

但由于手动打开数据库连接太昂贵,因此强烈建议使用数据库连接池.这将为您处理物理数据库连接,当您关闭它(即调用Connection#close)时,物理数据库连接将处于休眠模式并仍然处于打开状态.

相关问答:

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


qiG*_*uar 5

取决于你的需求是什么。

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

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