【问题标题】:Should you always close connections?你应该总是关闭连接吗?
【发布时间】:2012-12-29 03:44:06
【问题描述】:

到目前为止,我见过的所有 JDBC 代码每次都会创建和关闭一个连接。但是,我想知道这是否有必要,因为我的代码似乎工作得很好,而且我每次都重用相同的连接:

这是一种不好的做法吗?

public static int getCount() {
    synchronized (DATABASE_ACCESS_LOCK) {
        try (ResultSet rs = QUERY.executeQuery("SELECT COUNT(1) FROM " + TABLE_CLIENTS)) {
            return rs.getInt(1);
        } catch (SQLException ex) {
            ex.printStackTrace();
            return -1;
        }
    }
}

【问题讨论】:

    标签: java sqlite jdbc concurrency


    【解决方案1】:

    您通常应该在离开活动的工作范围时释放您的数据库连接。数据库连接是昂贵的资源。持有它们超过必要的时间会使连接池管理器的工作变得更加困难。

    如果您同时执行多个数据库操作,那么对所有这些操作使用相同的数据库连接是非常合理的。完成该组操作后,释放连接。

    【讨论】:

    • 当你说昂贵的资源时,你到底是什么意思?
    • @paranoid-android 没错,它们会占用内存并消耗其他资源,例如套接字和 CPU 周期。这是一种权衡,例如,创建连接的费用、保持连接打开的费用以及您使用它的数量。数据库服务器也有消耗,因为它需要维护有关连接的状态信息(以及所有底层需求,例如套接字)
    猜你喜欢
    • 2019-07-20
    • 2011-03-12
    • 2018-07-02
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多