기본편(6) - 다양한 연관관계 매핑

bin1225·2021년 10월 5일
0

JPA

목록 보기
6/12
post-thumbnail

연관관계 매핑시 주의사항

1. 다중성

• 다대일: @ManyToOne
• 일대다: @OneToMany
• 일대일: @OneToOne
• 다대다: @ManyToMany

2. 단방향, 양방향

테이블과 달리 객체는 참조의 방향이 존재한다. 따라서 양방향으로 참조하기 위해서는 단방향 연관관계를 2개 설정해야 한다.

최대한 단방향으로 설계 후 필요시에 양방향 연관관계를 설정하는 것을 권장.

3. 연관관계의 주인

양방향 관계일 때 두 객체중 테이블의 외래키를 관리할 곳을 지정해야 하며, 외래키를 관리하는 곳을 연관관계의 주인이라고 표현한다.
주로 '다'인 쪽이 연관관계의 주인

다중성

다대일 [N:1]

  • 단방향
    • 가장 많이 사용되는 연관관계
    • 반대는 일대다 로 설계하는 과정에서 헷갈린다면 그 반대를 생각해볼 것
  • 양방향

    • 외래키가 있는 쪽을 연관관계의 주인으로 설정한다.

일대일 [1:1]

  • 단방향
    일대일 관계는 주 테이블, 대상 테이블 중 외래 키를 선택할 수 있다는 특징이 있다.

주 테이블에 있는 경우는 @ManyToOne 과 유사하다.

대상 테이블에 있는 경우, 단방향 매핑은 지원하지 않는다.

주 테이블에 외래키를 두는 경우 객체지향에 더 적합하다. 테이블이 객체와 유사한 구조로 동작하여 JPA매핑이 편리하다.

반대로 대상 테이블에 외래키가 존재하면 일대일에서 일대다로 관계가 변경될 때도 테이블 구조를 유지하기 때문에 데이터베이스 설계에서 유리하다.

일대다 [1:N]

  • 단방향

    이런 식으로 반대편 테이블의 외래키를 관리하는 특이한 구조이다.
    일대다 단방향보다는 다대일 양방향 매핑 권장

다대다 [N:M]

다대다 관계는 연결 테이블용 엔티티를 추가하여 다대일 + 일대다 관계로 설계하고 관리한다
EX) ORDER <-> ORDER_ITEM <-> ITEM
실무에서는 절대 다대다 관계를 사용하지 않는다.

0개의 댓글

관련 채용 정보