김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다.
https://www.inflearn.com/courses?s=%EA%B9%80%EC%98%81%ED%95%9C
객체 연관관계와 테이블 연관관계 중 테이블 연관관계식으로 설계하면 다음과 같습니다.
Member
Team
이에 대해
1. 팀과 멤버 insert
2. 멤버가 어디 팀 소속인지 select
위의 2가지를 해보면 아래의 코드와 같습니다.
참조가 아닌 id를 통해 찾아가기 때문에 번거롭고, 객체지향적이지 못합니다.
이제 객체 지향적 설계로 바꿔보겠습니다.
멤버와 팀은 팀이 여러 멤버를 가질 수 있는 일대다 관계입니다.
위와 같이 하기 위해 엔티티에 수정이 필요합니다.
수정된 Member
이제 Long teamId가 아닌 Team team을 가집니다. 이렇게 참조형을 사용하기 위해서는 JPA에게 알려줘야 합니다.
@ManyToOne
현재 member가 N, Team이 1 의 N:1관계이므로 @ManyToOne어노테이션을 사용하여 관계를 명시합니다.
@JoinColumn(name="TEAM_ID")
해당 어노테이션은 외래키를 매핑할 때 사용됩니다. 현재 TEAM_ID를 외래키로 사용할 것이므로 name="TEAM_ID"를 넣어줍니다.
이제 멤버를 조회하고 해당 멤버가 어디 팀인지 조회하는 코드를 보겠습니다.
이제 getTeam()이 가능한 것을 볼 수 있습니다.
객체적 코드가 가능해진 것입니다.
연관관계가 매핑되어 있으므로 다음 코드처럼 멤버의 팀을 수정할 때에도 setTeam()으로 팀을 수정할 수도 있습니다.
'JPA > JPA원리' 카테고리의 다른 글
12 JPA 양방향 연관관계 실전예시 (0) | 2021.07.07 |
---|---|
11 JPA 양방향 연관관계와 연관관계의 주인 (0) | 2021.07.07 |
9 JPA 요구사항 추가(관계형 DB의존적 설계) (0) | 2021.07.05 |
8 JPA 기본키 매핑 (0) | 2021.07.05 |
7 JPA 필드와 칼럼 매핑 (0) | 2021.07.04 |