【分かりやすい】JPA概念解析:CascadeType(各種カスケード操作)詳細.

1866 ワード

本文の読書時間は5分です.作者の三汪が先発した.
詳細については、JPAエンティティのマッピングを参照してください.
  • 『JPAエンティティ関係マッピング:@ManyToMany多対多関係、@OneToMany@ManyToOne一対多対一の関係と@OneToOneの深さの実例解析』
  • 『JPA実体関係マッピング補遺:mappedByに関する思考』
  • 【すべてが始まる前に、カスケード関係を慎み、all権限を勝手に操作しないでください.ビジネスニーズに応じて必要なカスケード関係を選択する必要があります.そうしないと、大きな災いになる可能性があります.覚えておいてください.】
  • CascadeType.PERSISTの公式ドキュメントの説明:Cascade persist operationは、この列挙値に対するネット上の多くのブログの解釈を見て、カスケード永続化(保存)操作(所有者エンティティを永続的に保存する場合、エンティティのすべての関連データも永続的に保存する)です.私の心のOSは:お母さん.私もカスケードpersist操作だと知っています.肝心なのはどのように操作するかです.お母さん.所有者エンティティは何ですか.そのエンティティは何ですか.実践的な検証を経て、現在設定されているエンティティに別のエンティティを操作する権限を与えることを理解しました.この理解は各CascadeTypeに広がることができる.したがって、残りのCascadeType列挙値は、詳細には説明されません.For example:
  • public class Student {
        @ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)
        private Set courses = new HashSet<>();
        //     。
    }
    

    上記のコードでは、StudentがCourseをカスケード保存(cascade=CascadeType.PERSIST)する権限が与えられていることがわかります.このとき、Studentエンティティが持つCourseエンティティがデータベースに存在しない場合、そのStudentを保存すると、Courseエンティティに対応するデータベースに自動的にこのCourseデータが保存されます.この権限がなければ、Courseデータを保存できません.
  • CascadeType.REMOVE Cascade remove operation、カスケード削除操作.現在のエンティティを削除すると、マッピング関係のあるエンティティも削除されます.
  • CascadeType.MERGE Cascade merge operation、カスケード更新(マージ)操作.Studioのデータが変更されると、それに応じてCourseのデータが更新されます.
  • CascadeType.DETACH Cascade detach operation、カスケード脱管/遊離操作.エンティティを削除しますが、外部キーがあって削除できない場合は、このカスケード権限が必要です.関連するすべての外部キー関連付けが取り消されます.
  • CascadeType.REFRESH Cascade refresh operation、カスケードリフレッシュ操作.仮にシーンに1つの注文があって、注文の中に多くの商品が関連していて、この注文は多くの人に操作されることができて、それではこの時Aはこの注文と関連する商品に対して修正を行って、同時に、Bも同じ操作を行って、しかしBは先にAよりデータを保存して、それではAがデータを保存する時、先に注文の情報と関連する商品の情報を更新した後に、注文と商品を保存します.(良心の痛みからのコメント)
  • CascadeType.ALL Cascade all operationsは、以上のすべてのカスケード操作権限を明確にしています.

  • 以上です.私の文章があなたに役に立つことを望んでいます.何か意見や見解、疑問があれば、伝言討論を歓迎します.