私は興味があり、この答えをすぐに見つける必要があります。 Googleはあまり役に立ちません。
Java Persistence APIには、関連付けられたエンティティで操作をカスケードするようにフレームワークに指示するこれらのプロパティがあります。
CascadeType.PERSIST
CascadeType.DELETE
CascadeType.MERGE
CascadeType.REFRESH
最初の2つが何を意味するかを知っています。Bを持つオブジェクトAを永続化すると、Bも永続化し、Aを削除すると、Bも削除します。
しかし、私は他の2つが何を成し遂げているのか理解できません。助けて?
REFRESHは、「データベースからの状態の変更をすべて表示にプルする」ことを意味します。これをカスケードするのは簡単です。つまり、関連付けられているすべてのエンティティが更新されます。
MERGEは、「保存」に近い複雑な何かを意味しますが、「この切り離されたエンティティを管理状態に戻し、状態の変更を保存する」ようなものです。カスケードとは、関連するすべてのエンティティが同じ方法でプッシュバックされることを意味し、.merge()
から返される管理エンティティハンドルには、関連するすべての管理エンティティがあります。
私自身はこのように見ています(より読みやすい):