3.4.7. カスケード
Hibernate は Java Persistence 仕様よりも多くの操作を提供します。
@Cascade
アノテーションを使用して以下の操作をカスケードできます。
- PERSIST
- MERGE
- REMOVE
- REFRESH
- DELETE
- SAVE_UPDATE
- REPLICATE
- DELETE_ORPHAN
- LOCK
- EVICT
これは、
SAVE_UPDATE
(プレーンな Hibernate Annotations を使用する場合にフラッシュ時にカスケードされる操作。Hibernate EntityManager は仕様ごとにフラッシュ時に PERSIST
をカスケードします)。DELETE_ORPHAN は @OneToMany
アノテーションにのみ適用され、delete()/remove()
操作を関係から削除されたすべての子オブジェクトに適用するよう指定します。つまり、子は永続化された親により参照解除された場合や DELETE_ORPHAN
が使用された場合に、"orphaned" 状態の子が削除されます。
@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} ) @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
public Collection<Employer> getEmployers()
前の例で示されたように @Cascade を使用して @*To*(cascade=...) を補完することが推奨されます。