2

我有一个实现postFlush(). 据我了解,后刷新是数据已保存到数据库中,但在调用提交之前会回滚。如果我有一个看起来像这样的休眠配置:

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

这是否意味着在提交之前将数据保存到数据库中?哪个与冲洗后相同?postFlush()这会在预刷新阶段导致休眠拦截器调用吗?

4

1 回答 1

1

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

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

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

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

于 2012-12-03T16:46:32.287 回答