如何使用Hibernate捕获数据库通信故障?在运行应用程序的时候,如果数据库的连接在那里,那么我就得到了entitymanager,否则我就没有从spring容器中得到entitymanager。如何打开或关闭连接
发布于 2012-07-05 21:27:35
您使用的是哪个JPA提供程序?
如果您使用的是具有连接池的EclipseLink,则它应该在失败后自动检测失效连接,并在新连接上重试执行查询。
否则,根据您正在使用的DataSource或连接池,您可以启用连接测试,以确保连接在使用前是有效的(这确实会增加开销)。
您还可以捕获JPA异常并重试JPA事务。
发布于 2012-07-06 13:45:45
一般来说,您应该使用org.hibernate.SessionFactory对象和方法getCurrentSession()或openSession()来获取会话对象。一旦你有了Session对象,它实际上是org.hibernate.impl.SessionImpl的实例,你就可以使用connection()方法来获得Connection对象。
示例:
((SessionImpl)sessionFactory.getCurrentSession()).connection().isClosed();您可以使用c3p0 connection pool,它具有在使用之前检查连接的选项。
https://stackoverflow.com/questions/11341283
复制相似问题