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

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

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

最佳答案

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

因此,这取决于您的代码做什么。如果此行为不影响功能,则应该可以。

关于java - 在 session 期间更改Hibernate Session.FlushMode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22942352/

10-09 05:22