[JPA] 연관관계 매핑

mminjg·2022년 7월 11일
0

양방향 연관관계

  • 테이블의 연관관계 = 1개
    외래키 하나로 양방향 관계가 가능하다.
    회원 <-> 팀의 연관관계 1개(양방향)
  • 객체의 연관관계 = 2개
    Team에 members를 조회할 때 List를 추가해줘야 가능하다.
    회원 -> 팀 연관관계 1개(단방향)
    팀 -> 회원 연관관계 1개(단방향)

연관관계의 주인

양방향 매핑 규칙

  • 객체의 두 관계중 하나를 연관관계의 주인으로 지정 -> 외래키가 있는 곳이 주인!
  • 연관관계의 주인만이 외래 키를 관리(등록, 수정)
  • 주인이 아닌쪽은 읽기만 가능
  • 주인은 mappedBy 속성 사용X
  • 주인이 아니면 mappedBy 속성으로 주인 지정

연관관계 편의 메서드

 Team team = new Team();
 team.setName("TeamA");
 em.persist(team);

 Member member = new Member();
 member.setName("member1");

 team.getMembers().add(member); //**
 //연관관계의 주인에 값 설정
 member.setTeam(team); //**

 em.persist(member);

순수한 객체 관계를 고려하면 항상 양쪽다 값을 입력해야 한다!!

@Entity
public class Member { 

@Id @GeneratedValue
private Long id;

@Column(name = "USERNAME")
private String name;

private int age;

@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;// 연관관계 편의 메서드
// or Team에서 편의 메서드 만들어도 된다!
public void changeTeam(Team team) {
	this.team = team;
	team.getMembers().add(this);
}

0개의 댓글