基本編(5)-関連関係マッピングの基礎

3542 ワード

なぜ関連付けが必要ですか?

  • テーブルとオブジェクトの違い
    -テーブルは外部キーで、結合を使用して関連するテーブルを検索します.
    EX) TEAM_ID(FK) -> TEAM_ID(PK)
    -オブジェクトリファレンスを使用して関連オブジェクトを検索
    EX) Member.getTeam();
  • デフォルトのマッピングを使用してテーブルに対してオブジェクトを設計する場合、問題はこれらの違いがオブジェクトを指向させないことです.
    クエリー、保存などのロジックでは、引き続きTEAM IDとTEAMオブジェクトを変換して、ストレージとクエリーに使用します.

    たんほうこうかんけい

  • オブジェクト向けモデリング
    オブジェクトの参照とテーブルの外部キーをマッピングします.
  • @ManyToOne
    @JoinColumn(name = "TEAM_ID")
    private Team team;
    @JoinColumで外部キーと参照をマップします.
    @ManyToOneプロンプトマッピングタイプを指定します.
    これにより、JPAは、オブジェクト向けにデータを問合せ、格納、および変更することができる.
    EX) member.getTeam(), member.setTeam(team)

    双方向関連および関連関係の所有者

  • 双方向マッピング
    @mappedBy操作で、図面を逆方向にブラウズできます.
  • チームがメンバーをクエリーできるように設定
    @OneToMany(mappedBy = "team")
     List<Member> members = new ArrayList<Member>();
    メンバーオブジェクトを作成し、mappedByで関連関係を指定します.
    ただし,関連関係でない主人の方は読み取り専用であるため,データを修正することはできない.

    オブジェクトとテーブルの違い


    オブジェクトは、双方向マッピングでは実際には一方向の2つの関連関係です.
    しかし、違うのは、テーブルが外来の鍵でつながっていることです.
    すなわち、オブジェクトがテーブルに関連付けられている場合、テーブル内の鍵を誰が管理するかを決定する必要があります.
    *mappedByを持たない方がマスター、外来鍵管理

    双方向マッピングの注意事項


    •純粋なオブジェクトの状態を考慮して、常に2つの場所に値を設定する->関連関係を使用するのに便利な方法
    *関連メソッドの例
    public void setTeam(Team team){
    	member.setTeam(team);
        	Team.addMember(this);
    }
    이런 식으로 양쪽 객체에 각각 값을 주입되도록 설정한다.
    •ビジネスロジックで重要なのは、関連関係のオーナーになることではありません
    •できるだけ一方向マッピングを使用して設計を完了した後、必要に応じて双方向マッピングのみを使用します.考えなければならないことはますます多くなって、ますます複雑になって、だからできるだけ避けます.