Hibernate は、flush が呼び出されたときに実行されるステートメントを次の順序で並べ替えます: すべての挿入、すべての更新、すべての削除 (正確な定義については以下を参照)。
私が知りたいのは、この動作はJPAが必要とする標準的な動作であり、Eclipselinkも同じですか、それとも単にHibernate機能ですか?
Hibernate リファレンス、第 11.10 章。セッションのフラッシュ
SQL ステートメントは、次の順序で発行されます。
- 対応するオブジェクトが Session.save() を使用して保存されたのと同じ順序でのすべてのエンティティの挿入
- すべてのエンティティの更新
- すべてのコレクションの削除
- すべてのコレクション要素の削除、更新、および挿入
- すべてのコレクションの挿入
- 対応するオブジェクトが Session.delete() を使用して削除されたのと同じ順序でのすべてのエンティティの削除