1

Hibernate は、flush が呼び出されたときに実行されるステートメントを次の順序で並べ替えます: すべての挿入、すべての更新、すべての削除 (正確な定義については以下を参照)。

私が知りたいのは、この動作はJPAが必要とする標準的な動作であり、Eclipselinkも同じですか、それとも単にHibernate機能ですか?


Hibernate リファレンス、第 11.10 章。セッションのフラッシュ

SQL ステートメントは、次の順序で発行されます。

  1. 対応するオブジェクトが Session.save() を使用して保存されたのと同じ順序でのすべてのエンティティの挿入
  2. すべてのエンティティの更新
  3. すべてのコレクションの削除
  4. すべてのコレクション要素の削除、更新、および挿入
  5. すべてのコレクションの挿入
  6. 対応するオブジェクトが Session.delete() を使用して削除されたのと同じ順序でのすべてのエンティティの削除
4

1 に答える 1

1

どの JPA 実装も、フラッシュ順序付けに関して必要なことを行うことができます。仕様では、すべてのデータがデータストアに入るというだけで、そのようなことは定義されていません。すべての実装が Hibernate のように順序付けするわけではありません。一部 (例: DataNucleus JPA ) は、最初に何が必要かという観点から、純粋な参照整合性要件に基づいてそれを行います。

于 2012-04-19T06:27:50.560 に答える