当前位置: 首页 > 面试题库 >

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

养焱
2023-03-14
问题内容

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

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


问题答案:

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

  • 在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

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

相关问答:

  • Java连接池

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

  • 骨CP
  • c3po
  • Apache Commons DBCP
  • 光ikaCP


 类似资料:
  • 我有一个bukkit插件(minecraft),需要连接到数据库。 数据库连接应该一直保持打开状态,还是在需要时打开和关闭?

  • 我遇到了这个问题:对于Vaadin7,我已经配置了我的持久性。xml,下面是代码 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd“version=“2.0” 当我创建一个新的JPA容器并将其绑定到一个表时,我会在MSSQL活动监视器上看到我的新连接,但如果会话超时或注销,我仍然会在SQL上看到连接。 如果我在应用程序中重新登录,

  • 问题内容: 在许多使用MongoDB的入门示例中,您将看到类似以下的代码: 如果MongoDB与任何其他数据库系统一样,并且操作通常在时间上很昂贵。 所以,我的问题是这样的:只需执行一次,将返回值分配给某个全局模块即可,模块中具有各种功能就可以进行各种与数据库相关的工作(将文档插入集合,更新文档等)。 ),然后由应用程序的其他部分调用它们(从而重新使用该值),然后,在应用程序完成后,才执行。 换句

  • 问题内容: 我目前正在以内存模式测试H2 DB。我建立了一个连接 我想使用dbunit进行一些导入并设置dbUnits db连接 还有我想稍后查询的导入 所以我的问题是,在内存模式下,什么时候可以关闭连接?通常我会做这样的事情 但是在内存中,如果连接关闭,我会丢失数据吗?那么在我结束程序之前,它应该保持打开状态吗? 问题答案: 从H2文档中: 默认情况下,关闭与数据库的最后一个连接会关闭数据库。对

  • 在打开和关闭其他ejb连接时保持和ejb连接打开是常见的还是可以接受的,还是应该在客户端完成连接并为后续任务打开新连接后立即关闭连接? 我目前正在开发一个使用EJB(JBoss AS7.1.1.final)的Swing应用程序。该应用程序打开一个ejb连接(即创建一个SynalContext实例),然后在应用程序保持运行的情况下将该SynalContext用于常见任务。有许多长时间运行的操作,其中

  • 手动设置“自动取消”标志 改用builder.build() notificationmanger取消(id)和/或取消所有 使用NotificationCompat.Builder 对setContentIntent使用常规启动意图,而不是手动调用StartActivity