2

を実装する Hibernate Interceptor があり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 に設定すると、hibernate の自動セッション管理フラッシュがコミット前に実行され、その結果、postFlush が呼び出されます。

Hibernate InterceptorのpostFlush()メソッドは、hibernate マネージド Flush が実行された後、トランザクションがコミットされる前にのみ呼び出されます。

于 2012-12-03T16:46:32.287 に答える