다대일(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 |