2009-05-07 2 views
69

私は興味があり、この回答をすばやく見つける必要があります。 Googleはあまり役に立たない。私が持続する場合、Bを有し、同様にBを持続オブジェクト:REFRESHとMERGEはデータベースの意味は何ですか?

CascadeType.PERSIST 
CascadeType.DELETE 
CascadeType.MERGE 
CascadeType.REFRESH 

私は最初の二つの意味を知って:

れるJava Persistence APIは、関連するエンティティに対する操作をカスケード接続するためのフレームワークを伝えるこれらの性質を持っています、Aを削除すると、Bも削除されます。

しかし、私は他の2人が達成していることを理解できません。助けて?

答えて

60

REFRESHは、「データベースから状態への変更を自分の表現にプルする」ことを意味します。カスケード接続は簡単です。関連するすべてのエンティティがリフレッシュされることを意味します。

MERGEは、「保存」に近似しているが、「この分離されたエンティティを管理状態に戻し、状態の変化を保存する」という意味です。カスケードとは、すべての関連エンティティが同じ方法でプッシュバックされることを意味し、.merge()から返されるマネージエンティティハンドルは、関連付けられたすべての管理エンティティを持ちます。

Link to one instance of the relevant docs

+0

ありがとうございます。私はこの問題についても非常に混乱しています... – kosoant

+0

デフォルト(何かCascadeTypeを設定しなかった場合)と、最も賢明/共通の設定は何ですか? –

+0

@Rosdi Kasim: '' CascadeType''のデフォルトは空の配列です。 – user1438038

55

JPA Annotation Meaning for Many to Many relationships

  • ALL - ソースエンティティ上で実行可能なすべてのカスケード操作は、協会の対象にカスケード接続されています。
  • マージ - ソースエンティティがマージされている場合、マージはアソシエーションのターゲットにカスケードされます。
  • PERSIST - ソースエンティティが永続化されている場合、持続性は関連付けのターゲットにカスケードされます。
  • REFRESH - ソースエンティティがリフレッシュされる場合、リフレッシュはアソシエーションのターゲットにカスケードされます。
  • REMOVE - ソースエンティティが削除された場合、関連付けのターゲットも削除されます。

私自身はこの方法(読みやすく)、それらを参照してください。

  • が持続は、データベース内のオブジェクトから新しいレコードを作成することです。
  • 削除は、まあ、削除です。
  • 既存オブジェクトの場合はにマージオブジェクト内のデータを含むテーブル内の既存データ。 (データベースに同期)
  • REFRESHは、オブジェクト内のデータを更新します。おそらく、同期が必要なデータベースに変更がありました。 (データベースからの同期)
+0

注釈用のJavadocは、私にとっては何も解決しませんでした。答えをありがとう! –

関連する問題