JPA

연관관계 매핑 기초

희구 2021. 8. 5. 18:50

연관관계 매핑 기초

목표

• 객체와 테이블 연관관계의 차이를 이해

• 객체의 참조와 테이블의 외래 키를 매핑 (테이블은 나와 연관된걸 찾을 때 외래키를 활용)

• 용어 이해

  • 방향(Direction): 단방향, 양방향
  • 다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해
  • 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인 이 필요

목차

• 연관관계가 필요한 이유

• 단방향 연관관계

• 양방향 연관관계와 연관관계의 주인

• 실전 예제 - 2. 연관관계 매핑 시작

연관관계가 필요한 이유는?

  • ‘객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다. - 조영호(객체지향의 사실과 오해)

-> 객체 하나로 살아갈 수 있는 세상이 아니다. 객체는 연관관계가 걸려있어 다 활용을 하기 때문이다.

예제 시나리오

• 회원과 팀이 있다.

• 회원은 하나의 팀에만 소속될 수 있다.

• 회원과 팀은 다대일 관계다.

객체를 테이블에 맞추어 모델링(연관관계가 없는 객체)

image-20210805182823642

객체를 테이블에 맞추어 모델링( 참조 대신에 외래 키를 그대로 사용 )

image-20210805184856896

객체를 테이블에 맞추어 모델링(외래키 식별자를 직접 다룸)

image-20210805184932605

객체를 테이블에 맞추어 모델링 (식별자로 다시 조회, 객체 지향적인 방법은 아니다.)

image-20210805184959338

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

• 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다.

• 객체는 참조를 사용해서 연관된 객체를 찾는다.

• 테이블과 객체 사이에는 이런 큰 간격이 있다

 

 

 

 

참고 - 김영한님의 자바 ORM 표준 JPA프로그래밍 강의