【问题标题】:Check database In JPA在 JPA 中检查数据库
【发布时间】:2012-07-03 18:22:47
【问题描述】:

如何在JPA中检查数据库是否连接,当数据库连接在部署应用程序后打开或关闭时(在运行应用程序时)

【问题讨论】:

    标签: java mysql jpa


    【解决方案1】:

    通常所有 JPA 实现都使用一些连接池或池化数据源(如 C3P0),这些连接池 have a configuration 在获取连接之前测试数据库连接。请检查您的连接池/数据源文档以了解此设置。

    【讨论】:

    • 在我的应用程序数据库连接被切断,在发出任何请求后它没有任何操作或它是空白的,并且我的日志中没有显示任何异常
    • 你的意思是你打开和关闭每个查询到数据库的连接?
    • 在我的应用程序中,每个操作都依赖于 DB。所以它应该检查连接以正确运行应用程序。
    【解决方案2】:

    最简单的方法是执行查询,比如

    em.createNativeQuery("select 1 from dual").getSingleResult();
    

    通常,数据源/连接池或 JPA 提供程序会提供某种连接测试或死连接解决方​​案。

    如果您使用 EclipseLink 的连接池,它将自动检测死连接并重试查询。

    【讨论】:

    • 这很好,但不适用于所有数据库类型。例如,不适用于 PostgreSQL。我正在为 postgresql 使用“选择 1”。我想知道是否有一些统一的方法适用于所有数据库
    猜你喜欢
    • 2021-04-23
    • 1970-01-01
    • 2011-06-02
    • 2022-12-04
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    相关资源
    最近更新 更多