김영한님이 지음, [자바 ORM 표준 JPA 프로그래밍] 책을 읽고 정리한 필기입니다.📢
양방향 연관관계
양방향 연관관계
- 객체 연관관계 : 일대다 관계를 구현하기 위해 컬렉션 사용
- 테이블 연관관계 : 외래 키 하나만으로 양방향 조회 가능, 추가할 내용 없음
양방향 연관관계 매핑
회원 엔티티
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Entity
public class Member {
@Id
@Column(name = "MEMBER_ID")
private String id;
@Column(name = "NAME", nullable = false, length = 10)
private String username;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
//연관관계 설정
public void setTeam(Team team){
this.team = team;
}
//Getter, Setter...
public void setTeam(Team team) {
this.team = team;
team.getMembers().add(this); //Member가 이 연관관계의 주인이기 때문에 여기서 team 내부 memberlist에 회원을 넣어줘야 함
}
}
팀 엔티티
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Entity
public class Team {
@Id
@Column(name = "TEAM_ID")
private String id;
private String name;
//==추가==//
@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();
//Getter, Setter ...
}
mappedBy
속성은 양방향 매핑일 때 사용하는데 반대쪽 매핑의 필드 이름을 값으로 주면 된다.
일대다 컬렉션 조회
1
2
3
4
5
6
7
8
9
10
11
public static void biDirection(EntityManager em){
Team team = em.find(Team.class, "team1");
List<Member> members = team.getMembers(); //(팀 -> 회원)
for(Member member : members){
System.out.println("member.username = " + member.getUsername());
}
}
//==결과==
//member.username = 회원1
//member.username = 회원2
위 방식으로 컬렉션 조회할 수 있다.
댓글남기기