web-dev-qa-db-ja.com

Hibernateのカスケードとは何ですか?

Hibernateのcascadingとは何ですか? cascadeタグには、map属性があります。それは何を意味していますか?

cascade = all意味?私が読んだような他の属性があります
cascade="none|save-update|delete|all-delete-Orphan|delete-Orphan"

24
saplingPro

カスケードは、1つのオブジェクトが関連付けを介して他のオブジェクトに伝播することを含む永続化アクションに関するものです。カスケードは、さまざまなHibernateアクションに適用でき、通常は推移的です。アソシエーションを定義するアノテーションの「cascade = ...」属性は、そのアソシエーションのためにどのアクションがカスケードされるべきかを示します。

Cascade = "all"は、すべてのプライマリカスケードタイプを適用することを意味します。 Hibernate 5.3以降、これらのタイプは次のとおりです。

  • 「削除」/「削除」、
  • 「デタッチ」/「エビクト」、
  • "マージ"、
  • "ロック"、
  • 「persist」、
  • 「リフレッシュ」、
  • 「複製」、
  • 「save_update」/「update」

(これらのカスケード型名の一部は古いものであり、廃止されています。)

さらに3つの複合タイプがあります。

  • 「all_delete_Orphan」-「all」と同じことを意味し、カスケードによって孤立したエンティティの削除を有効にします。
  • 「delete_Orphan」-「delete」と孤立した削除を意味します。
  • 「なし」-カスケードなしを意味します。
19
Stephen C

カスケードは、Hibernateの推移的持続性モデルの使用方法です。推移的な永続性は、永続性(データベースにまだ保存されていないオブジェクト)と分離されたサブグラフ(子オブジェクト)に永続性を自動的に伝播できる技術です。たとえば、すでに永続的な親オブジェクトの新しく作成された子オブジェクトは、save()またはpersist()メソッドを呼び出さなくても自動的に永続的になります。

Hibernateのカスケードには、save-update、persist、merge、deleteなどの多くのオプションがあります。Cascade= 'all'は、すべてのカスケードオプションを適用する方法です。

6
Prashant_M