Hibernate flush_before_completion的工作方式如后冲洗或预冲洗?

时间:2012-12-03 11:37:00

标签: java hibernate

我有一个实现postFlush()的Hibernate Interceptor。根据我的理解,post flush是数据已保存到数据库中,但在调用commit之前它会被回滚。如果我有一个看起来像这样的hibernate配置:

<property name="hibernate.transaction.flush_before_completion">true</property>

这是否意味着在提交之前将数据保存到数据库中?与后冲洗相同的是什么?这会在预冲洗阶段引起hibernate拦截器postFlush()调用吗?

1 个答案:

答案 0 :(得分:0)

属性hibernate.transaction.flush_before_completion用于“容器管理事务(CMT)”或JTA,如果您使用的是JDBC事务则不相关。

如果设置为true,则在事务完成前阶段执行刷新,将所有数据发送到数据库(仍可以回滚)。这个刷新不是由休眠会话管理的。

如果设置为false,则在提交之前执行自动会话管理的hibernate刷新,因此将调用postFlush。

Hibernate Interceptor的postFlush()方法只会在执行hibernate托管Flush之后和事务提交之前调用。