如何在可能的损坏后检查Hibernate会话是否仍然有效

时间:2014-11-04 08:20:46

标签: java hibernate

我使用Hibernate跨越多个Web请求的长会话(对话),其中全局拦截器管理打开和关闭Hibernate会话。如果会话与HibernateException(例如ConstraintViolationException)崩溃,则会cannot be used any more,因为存在不可预测行为的危险。因此必须关闭并丢弃会话,并打开一个新会话。但是在我的设计中,会话管理(Web请求拦截器)和数据访问代码位于不同的层,因此拦截器在请求结束时无法知道中间是否发生了HibernateException。我需要一些方法来测试会话是否仍然有效以及是否可以继续使用。使用session.isOpen()无济于事:即使返回true,会话中的其他调用方法也可能导致另一次崩溃。

有没有可靠的方法呢?谢谢!

0 个答案:

没有答案