JPA/연관관계 Mapping

[JPA] 연관관계가 필요한 이유

Boradoris 2023. 2. 26. 20:45

예제 시나리오

  • 회원과 팀이 있다. 
  • 회원은 하나의 팀에만 소속될 수 있다. 
  • 회원과 팀은 다대일 관계다.

 

 

객체를 테이블에 맞추어 모델링

(연관관계가 없는 객체)

 

(참조 대신에 외래 키를 그대로 사용)

@Entity
public class Member { 
 
 @Id @GeneratedValue
 private Long id;
 
 @Column(name = "USERNAME")
 private String name;
 
 @Column(name = "TEAM_ID")
 private Long teamId; 
 … 
 } 

@Entity
public class Team {

 @Id @GeneratedValue
 private Long id;

 private String name; 
 … 
 }

 

(외래 키 식별자를 직접 다룸)

 //팀 저장
 Team team = new Team();
 team.setName("TeamA");
 em.persist(team);
 
 //회원 저장
 Member member = new Member();
 member.setName("member1");
 member.setTeamId(team.getId());
 em.persist(member);

 

(식별자로 다시 조회 → 객체 지향적 방법 X)

 //조회
 Member findMember = em.find(Member.class, member.getId()); 
 
 //연관관계가 없음
 Team findTeam = em.find(Team.class, team.getId());

 

 

객체를 테이블에 맞추어 데이터 중심으로 모델링
→ 협력 관계를 만들 수 없음

  • 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다. 
  • 객체는 참조를 사용해서 연관된 객체를 찾는다. 
  • 테이블과 객체 사이에는 이런 큰 간격이 있다.

 


출처 : https://www.inflearn.com/course/ORM-JPA-Basic/