如何使用Hibernate捕获数据库通信失败

时间:2012-07-05 09:16:33

标签: java mysql spring hibernate

Catch Database Commumication如何使用Hibernate失败?在运行应用程序时,如果DB的连接在那里,那么我得到了实体管理员,我没有从spring containar获得entitymanager。 如何打开或关闭连接

2 个答案:

答案 0 :(得分:0)

您使用的是哪个JPA提供商?

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

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

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

答案 1 :(得分:0)

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

示例:

((SessionImpl)sessionFactory.getCurrentSession()).connection().isClosed();

您可以使用c3p0 connection pool选项来检查连接,然后再使用它。