我有一个实现postFlush()
的Hibernate Interceptor。根据我的理解,post flush是数据已保存到数据库中,但在调用commit之前它会被回滚。如果我有一个看起来像这样的hibernate配置:
<property name="hibernate.transaction.flush_before_completion">true</property>
这是否意味着在提交之前将数据保存到数据库中?与后冲洗相同的是什么?这会在预冲洗阶段引起hibernate拦截器postFlush()
调用吗?
答案 0 :(得分:0)
属性hibernate.transaction.flush_before_completion用于“容器管理事务(CMT)”或JTA,如果您使用的是JDBC事务则不相关。
如果设置为true,则在事务完成前阶段执行刷新,将所有数据发送到数据库(仍可以回滚)。这个刷新不是由休眠会话管理的。
如果设置为false,则在提交之前执行自动会话管理的hibernate刷新,因此将调用postFlush。
Hibernate Interceptor的postFlush()
方法只会在执行hibernate托管Flush之后和事务提交之前调用。