TIL

[TIL] 20240129 JPA 연관 관계

yjyj0101 2024. 1. 29. 22:00

1. 연관 관계 정의규칙

  • 방향 : 단방향, 양방향 (객체 참조)
  • 연관 관계의 주인 : 양방향일 때, 연관 관계에서 관리 주체
  • 다중성 : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)

+) 무조건 양방향으로 하는 것이 좋은가?

구분하기 좋은 기준은 기본적으로 단방향 매핑으로 하고 나중에 역방향으로 객체 탐색이 꼭 필요하다고 느낄 때 추가하는 것으로 잡으면 됩니다.

다른 엔티티들도 불필요한 연관관계 매핑으로 인해 복잡성이 증가할 수 있음

 

 

2. 연관 관계의 주인

두 단방향 관계(A→B, B→A)중, 제어의 권한(외래 키를 비롯한 테이블 레코드를 저장, 수정, 삭제 처리)을 갖는 실질적인 관계가 어떤 것인지 JPA에게 알려줘야 함

연관 관계의 주인이 아닌 객체에서 mappedBy 속성을 사용해서 주인을 지정

 

3. 종류

    • 다대일(N:1) 
      • 다대일(N:1) 단방향
      • 다대일(N:1) 양방향
    • 일대다(1:N) ->문제가 많다.
      • 일대다(1:N) 단방향
      • 1 대 N 관계에서는 일반적으로 양방향 관계가 존재하지 않음
    • 일대일(1:1)
      • 일대일(1:1) 단방향
      • 일대일(1:1) 양방향
    • 다대다(N:N)
      • N : M 관계를 풀어내기 위해 중간 테이블(orders)을 생성하여 사용
      • 다대다를 일대다, 다대일로 풀어서 만드는 것(중간 테이블을 Entity로 만드는 것)이 추후 변경에도 유연하게 대처

 

 

 

 

 

 

출처 : https://jeong-pro.tistory.com/231