我的应用程序使用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/