[解決済み] JPAにおけるCascadeType.REMOVEとorphanRemovalの違いは何ですか?
2022-07-27 14:12:38
質問
とはどう違うのでしょうか?
@OneToMany(cascade=REMOVE, mappedBy="customer")
public List<Order> getOrders() { ... }
と
@OneToMany(mappedBy="customer", orphanRemoval="true")
public List<Order> getOrders() { ... }
この例はJava EE Tutorialに載っているものですが、まだ詳細がわかりません。
どのように解決するのですか?
から ここから :-
<ブロッククオートカスケード削除
参照フィールドにCascadeType.REMOVE(またはREMOVEを含むCascadeType.ALL.)をマークすることは、削除操作が必要であることを示します。 REMOVE を含む CascadeType.ALL) は、削除操作がそのフィールドによって参照されるエンティティ オブジェクトに自動的にカスケードされる必要があることを示します。 そのフィールドによって参照されるエンティティ・オブジェクトに自動的にカスケードされることを示します。 フィールドによって参照されるエンティティ・オブジェクトに自動的にカスケードされることを示します(1つのコレクション・フィールドによって複数のエンティティ・オブジェクトが参照されることがあります)。 フィールドによって参照される)。
@Entity
class Employee {
:
@OneToOne(cascade=CascadeType.REMOVE)
private Address address;
:
}
オーファン除去
JPA 2では、より積極的な削除カスケードモードが追加されました。 の orphanRemoval 要素を使用して指定することができます。 要素を用いて指定できます。
@Entity
class Employee {
:
@OneToOne(orphanRemoval=true)
private Address address;
:
}
違い:-)
2 つの設定の違いは、リレーションシップを切断する際の対応にあります。 リレーションシップを切断したときの対応です。たとえば、次のような場合です。 addressフィールドをNULLにしたり、別のAddressオブジェクトにしたりする場合などです。
- もし orphanRemoval=true が指定されると、切断されたアドレスのインスタンスは自動的に削除されます。これは 依存オブジェクト (例: Address) を整理するのに便利です。 所有者オブジェクト(例:Employee)からの参照なしに存在してはならない従属オブジェクト(例:Address)を整理するのに便利です。
-
もし
cascade=CascadeType.REMOVEです。
が指定されている場合、リレーションシップを切断することは削除ではないので、自動的なアクションは行われません。
操作ではありません。
関連
-
[解決済み] Spring Data JPAにおけるCrudRepositoryとJpaRepositoryのインターフェースの違いは何ですか?
-
Javaジェネリックを1つの記事で
-
API の戻り値を処理するために ResponseEntity を使用する
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] JDKとJREの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
型に解決できない エラー解決
-
Java の switch case 文で必要な定数式の問題の解決法
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
シェルコマンドやスクリプトのJavaコール
-
配列定数は初期化子でのみ使用可能です。
-
ApiModel と @ApiModelProperty の使用法
-
[解決済み] JPA OneToManyで子が削除されない