在会话期间更改Hibernate Session.FlushMode

时间:2014-04-08 16:04:43

标签: java hibernate interceptor hibernate-session

我的应用程序使用FlushMode.AUTO。 对于特定的服务方法调用,我想将Hibernate Session。FlushMode更改为FlushMode.COMMIT,并在方法完成时恢复为FlushMode.AUTO

问题: - 在会话期间更改FlushMode是否存在任何问题/危险?

会话期间更改FlushMode的原因: - 我正在使用Hibernate拦截器方法(onFlushDirty)来审核更改。 使用FlushMode.AUTO,发生多个会话刷新(FlushMode.AUTO的行为)。因此,多次调用onFlushDirty会导致重复审核。 我在上述问题的方法中将FlushMode更改为COMMIT,解决了上述问题。

1 个答案:

答案 0 :(得分:0)

触发自动刷新的最常见原因是在执行过程中使用执行查询。如果Hibernate检测到会话中的某些非刷新更改可能会影响查询结果,则会自动触发刷新。因此,当您的查询执行时,它会获得与您在会话中所做的更改一致的数据。

因此,这取决于您的代码的作用。如果此行为不影响功能,则应该没问题。