基本編(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);
}
이런 식으로 양쪽 객체에 각각 값을 주입되도록 설정한다.
•ビジネスロジックで重要なのは、関連関係のオーナーになることではありません•できるだけ一方向マッピングを使用して設計を完了した後、必要に応じて双方向マッピングのみを使用します.考えなければならないことはますます多くなって、ますます複雑になって、だからできるだけ避けます.
Reference
この問題について(基本編(5)-関連関係マッピングの基礎), 我々は、より多くの情報をここで見つけました https://velog.io/@bins1225/기본편5-연관관계-매핑-기초テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol