マッピング[Spring]JPA関連付け😎


今回は実際のコード深さマッピングによる関連関係(?)私はあなたに聞く時間をあげます.😎

寒い~足~ヒヒ

🏷 マルチペア1(N:1)


1.多対一一方向
多対一の反響の中で、「多」側は@ManyToOne言語テストを追加する.
「事」に反対する側は参照しない.
2.多対一双方向
多対一双方向に「日」方向に@OneToMany語を追加し、mappedByを使用して関連関係の所有者を指定します.
📌 mappedByを指定する場合、値はターゲット変数名で指定できます.

🏷 1対多(1:N)


一対多が多対一から関連関係になった主人が多い
従って、「日」についても同様に@OneToMany項目を追加した.mappedByの代わりに@JoinColumnでサインします.
しかし、一対のマルチマッピングには致命的な欠点がある.🤔
  • を1つだけ変更しても、クエリーが発生する他の変更が発生します.
  • そのため、一対の多一方向関連マッピングが必要であれば、多対一双方向関連をマッピングするだけで、後でメンテナンスが容易になるので、この方式を推奨します!
  • 👀 マルチペア、マルチコードビュー

    Order.java
        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "member_id") // foreign key 는 '다'인 order 가 가짐
        private Member member;
    Member.java
        // 연관관계의 주인이 아닌 쪽에는 'mappedBy' 사용
        // 여기서 member는 'Order 테이블에 있는 member 필드에 의해 mapped 됐다' 는 의미
        @OneToMany(mappedBy = "member")
        private List<Order> orders = new ArrayList<>();

    🏷 1対1(1:1)


    プライマリ・テーブルに外部キーを追加するか、ターゲット・テーブルに外部キーを追加できます.
    多対日同様、外来キーのある方は@OneToMany言語テストを追加します.
    1対1の双方向の場合は、mappedByの設定を追加します.
    📌 一対一の一方向であれば、できるだけランニングマシンに外部キーを取り付けることが望ましい.

    👀 1対1のコードで表示

    Order.java
        @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "delivery_id") // 일대일인 경우, FK는 아무곳에나 있어도 되는데 여기서는 접근을 더 많이 하는 order 에 둠
        private Delivery delivery;
    Delivery.java
        @OneToOne(mappedBy = "delivery", fetch = FetchType.LAZY)
        private Order order;

    🏷 マルチペアマルチ(N:N)


    マルチペアマルチマッピングは前回のロケーションで述べたように、中間テーブルは非表示なので、自分でも知らない複雑な結合クエリーが発生する可能性があるので、実際の操作では使用しないことをお勧めします.