如何使用Hibernate捕获数据库通信失败?在运行应用程序时,如果DB的连接存在,那么我得到了entitymanager,否则我没有从spring包含实体管理器。 如何获得连接是打开还是关闭如何使用Hibernate捕获数据库通信失败
回答
您使用的是JPA提供程序?
如果您使用EclipseLink及其连接池,它应该在失败后自动检测到死连接,然后在新连接上重试执行查询。
否则,根据您使用的是什么DataSource或连接池,您可以启用连接测试以确保连接在使用前有效(尽管这确实会增加开销)。
您也可以捕获JPA异常并重试您的JPA事务。
一般而言,您应该使用say org.hibernate.SessionFactory
对象和方法getCurrentSession()
或openSession()
来获取Session对象。一旦你有Session对象,它实际上是org.hibernate.impl.SessionImpl
的实例,你可以使用connection()
方法获得Connection对象。
例子:
((SessionImpl)sessionFactory.getCurrentSession()).connection().isClosed();
您可以使用c3p0 connection pool其中有选项来检查连接之前使用它。
我没有得到数据库连接失败后的会话,所以我怎么会发现异常 – 2012-07-06 05:58:20
因此,首先确保您的连接汇集和测试。如果在启动或提交事务时发生连接失败,您将得到org.hibernate.TransactionException。 – 2012-07-06 06:07:03
- 1. 如何将连接失败捕获到不可信的Rose :: DB数据库?
- 2. 通过hibernate映射插入数据到数据库表失败
- 3. 使用“dd”捕获并恢复失败?
- 4. SML未捕获的异常“使用失败:Io:openIn失败...”
- 5. 通过数据库搜索失败
- 6. ExporttoPDF()失败,数据库登录失败
- 7. 如何使用PySVN捕获登录失败?
- 8. mysql:使用php,mysqli_connect()失败时如何捕获错误?
- 9. 如何在使用JUnit4的Selenium Webdriver中捕获测试失败?
- 10. 如何获取我通过Hibernate连接的数据库名称?
- 11. 如何通过Hibernate获取数据库版本?
- 12. 如何捕获数据库异常?
- 13. 捕获Microsoft.Extensions.Caching.Redis连接失败?
- 14. 捕获构建失败Ant
- 15. 捕获失败邮件
- 16. 如何使用netfilter捕获数据包?
- 17. 当数据库连接失败时,Hibernate不会引发异常
- 18. Hibernate 4.1.x抛出异常 - 通信链接失败
- 19. 如何捕获执行数据库触发器的通知?
- 20. 数据库连接失败
- 21. 数据库查询失败
- 22. 登录失败数据库
- 23. 数据库恢复失败,
- 24. 数据库连接失败
- 25. 数据库迁移失败
- 26. Django ORM数据库失败
- 27. 数据仓库 - 非易失性与更改数据捕获
- 28. nodejs和数据库通信 - 如何?
- 29. Simblee/Rfduino Gzll通信失败
- 30. 与Apple通信失败
我正在使用Hibernate JPA提供程序。我怎样才能捕获JPA异常?以及我如何启用连接测试检查连接是否有效? – 2012-07-06 01:36:49