본문 바로가기

spring

연관관계 매핑 종류 / 방향

객체지향에서는 여러 객체에 나누어 객체 간 협력을 하며 기능

≫ 객체들을 서로 연결할 수 있도록 객체 간 참조 사용!

≫ 객체지향과 DB 간의 차이 발생

  • 객체지향 : 객체 간 참조를 사용해 객체들을 연결
  • DB : 테이블의 외래키를 사용해 정규화

 

연관관계 매핑
  • JPA에서 성능을 결정하는 중요한 요소
  • 연관관계 설정을 통해 객체 '참조'와 테이블의 FK를 매핑시켜 사용
  • 방향성(Direction), 다중성(Multiplicity) ≫ 두 가지 기준 존재

 

방향성 (Direction)
방향 설명
단방향 두 엔티티 관계에서 한쪽 엔티티만 참조
양방향 두 엔티티 관계에서 양쪽 엔티티가 서로 참조
: A → B, B → A

 

 

예)

1. 게시글 객체가 참조 변수를 통해 댓글 객체만 참조하면 ≫ 단방향

 

2. 댓글 객체도 게시글 객체를 참조 변수를 통해 참조하면 ≫ 양방향

 

** 테이블의 경우

FK로 양쪽 방향을 참조할 수 있으므로 언제나 양방향 관계 !

즉, FK인 POST_ID를 통해 양쪽으로 조인할 수 있음

 

연관관계 주인 (owner)
  • 연관관계는 두 테이블 간의 관계
  • 한 테이블에서 다른 테이블 PK를 FK로 가지게 됨
  • 일반적으로 FK를 가진 테이블이 주인(owner)이 됨!
    • 주인은 FK를 사용해 작업 가능
    • 주인이 아닌 엔티티는 읽는 작업만 가능

 

다중성 (Multiplicity)
  • 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)
  • 예) 여러 댓글이 하나의 게시글에 속하는 상황
    1. 댓글 입장 ≫ 다대일 관계
    2. 게시글 입장 ≫ 일대다 관계
  • 연관관계를 어떤 엔티티 중심으로 보는지에 따라 연관관계 표현은 달라짐

 

 

 

 

'spring' 카테고리의 다른 글

영속성 전이  (0) 2024.09.15
다대일 단/양방향 매핑  (0) 2024.09.15
JPA Auditing / Base Entity  (0) 2024.09.14
Lombok  (0) 2024.09.13
@Query 어노테이션  (0) 2024.09.13