본문 바로가기

spring

다대일 단/양방향 매핑

다대일(N:1) 단방향 매핑

 

예)

1. 댓글(comment)들은 하나의 글(post)에 달려있음 (댓글 N : 글 1)

2. 댓글을 조회했을 때, 댓글이 속해있는 글도 같이 조회됨

3. 글을 통해 댓글에 접근할 수 없음

  • comment 엔티티에 매핑 설정을 추가
  • 글(post) 객체는 댓글(comment)로부터 참조 당하는 것, 참조할 필요 없으므로 추가할 설정은 없음

 

다대일(N:1) 양방향 매핑

 

예)

1. 댓글(comment)들은 하나의 글(post)에 달려있음 (댓글 N : 글 1)

2. 댓글을 조회했을 때 댓글이 속해있는 글도 같이 조회됨

3. 글을 통해서도 댓글에 접근할 수 있음

  • mappedBy="post" ≫ "post"는 comment의 post 필드

 

양방향 매핑과 주인 (owner)
  • 누가 FK를 관리(등록/수정)할 것인가?
  • 둘 중 하나 관계를 연관관계 주인으로 정하고 FK를 관리
  • 주인이 아닌 쪽은 내가 이미 매핑이 되었다는 것을 나타내기 위해 'mappedBy' 속성을 사용하고 조회만 가능
  • FK 키가 있는 곳을 주인으로 정하기

 

@ManyToOne 어노테이션
속성 기능 기본값
optional 연관된 엔티티가 있지 않아도 되는지,
false로 설정하면 연관된 엔티티가 반드시 있어야 함
이너조인으로 변경 시 사용
true
fetch Fetch 전략 설정
LAZY 설정은 연관 엔티티를 실제 사용될 때 조회
EAGER는 연관 엔티티를 동시에 조회
@OneToMany : LAZY
@ManyToOne : EAGER
cascade 영속성 전이
연관 엔티티 관리(저장/삭제)를 함께할 때 사용
 
  • 연관된 엔티티가 반드시 있어야 하는 것은 아님 ≫ optional 기본값은 true
  • fetch 전략 ≫ ManyToOne의 경우 기본값은 EAGER / OneToMany의 경우 기본값은 LAZY

 

 

 

 

'spring' 카테고리의 다른 글

로깅(Logging)  (0) 2024.09.20
영속성 전이  (0) 2024.09.15
연관관계 매핑 종류 / 방향  (0) 2024.09.15
JPA Auditing / Base Entity  (0) 2024.09.14
Lombok  (0) 2024.09.13