首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Hibernate捕获数据库通信故障

如何使用Hibernate捕获数据库通信故障
EN

Stack Overflow用户
提问于 2012-07-05 17:16:33
回答 2查看 1.2K关注 0票数 0

如何使用Hibernate捕获数据库通信故障?在运行应用程序的时候,如果数据库的连接在那里,那么我就得到了entitymanager,否则我就没有从spring容器中得到entitymanager。如何打开或关闭连接

EN

回答 2

Stack Overflow用户

发布于 2012-07-05 21:27:35

您使用的是哪个JPA提供程序?

如果您使用的是具有连接池的EclipseLink,则它应该在失败后自动检测失效连接,并在新连接上重试执行查询。

否则,根据您正在使用的DataSource或连接池,您可以启用连接测试,以确保连接在使用前是有效的(这确实会增加开销)。

您还可以捕获JPA异常并重试JPA事务。

票数 0
EN

Stack Overflow用户

发布于 2012-07-06 13:45:45

一般来说,您应该使用org.hibernate.SessionFactory对象和方法getCurrentSession()openSession()来获取会话对象。一旦你有了Session对象,它实际上是org.hibernate.impl.SessionImpl的实例,你就可以使用connection()方法来获得Connection对象。

示例:

代码语言:javascript
运行
复制
((SessionImpl)sessionFactory.getCurrentSession()).connection().isClosed();

您可以使用c3p0 connection pool,它具有在使用之前检查连接的选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11341283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档