본문 바로가기
JPA/JPA원리

10 JPA 단방향 연결관계 (객체적 설계도입)

by 킹차니 2021. 7. 5.
김영한님의 인프런 강의와 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()으로 팀을 수정할 수도 있습니다.