java - 如何检查您是否仍然使用 jpa 连接到数据库
问题描述
我正在尝试使用 EntityManager/Session 类检查与 jpa 的数据库连接。
要检查这两种情况(已连接/未连接),我只需在运行代码之前启动/停用服务 mysql。
向数据库询问简单的 sql 查询是不明智的,因为它并不涵盖所有情况。
我已经尝试过:
Session session = entityManager.unwrap(Session.class)
session.isConnected();
但这总是返回true...
当我禁用 mySQL 服务时,我希望 session.isConnected() 返回 false,但它总是返回 true;
有没有其他方法可以检查数据库连接(可能使用任何其他类)?
解决方案
简短的回答:不要
长答案:如果您正在开发一个重要的应用程序,您可能会使用某种数据库连接池框架,例如
这将为您管理许多重要方面,包括连接生命周期。例如,在 tomcat jdbc 中,您可以指定:
testOnBorrow="true"
validationQuery="select 1 from sysibm.dual"
这在 IBM DB2 数据库上将在您每次使用连接时测试连接是否过时,如果选择失败,还会将其换成新连接。通过这种方式,您将永远不必在应用程序代码级别上担心这一点。
推荐阅读
- python - 如何在 python 中构建 Nps 的关键驱动分析?
- php - Wordpress:自定义永久链接结构 - /%custom-post-type%/%custom-taxonomy%/%post-name%/
- file-upload - 如何写一个笑话测试
在我的 LWC - google-apps-script - 特定范围之间的 Google 表单正则表达式“不匹配”不起作用
- jquery - 使用 setOptions 动态更改属性后剑道滑块的问题
- reactjs - 我在从控制器组件中以反应钩子形式检索值时遇到问题
- javascript - 在 JavaScript 中组合多个分隔符(拆分)
- android - 为什么在 Kotlin 的 recyclerView 中使用 ImageSlider 时会出现 java.lang.ExceptionInInitializerError 错误?
- triggers - 在手表上触发是否会导致故障排除问题?
- javascript - 无法使用 cypress 访问 html 元素