Catch Database Commumication如何使用Hibernate失败?在运行应用程序时,如果DB的连接在那里,那么我得到了实体管理员,我没有从spring containar获得entitymanager。 如何打开或关闭连接
答案 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选项来检查连接,然后再使用它。