우주에서 글을 적어본다
[Spring boot JPA] Fetch 전략과 orphanRemoval 본문
현재 진행 중인 프로젝트 구현을 완료하였다.
이번에 처음으로 JPA를 이용하여 개발을 진행해서 궁금했던 것들을 기록&복습용으로 블로그에 정리해 나가도록 하겠다.
테이블을 조인할 때 fetch를 사용하는데
우선 fetch의 의미는 "가지고 오다(to go to another place to get something or someone)"라는 의미다.
즉 테이블을 조회할 때 사용한다.
JPA에서는 테이블을 언제 조회할 것인가에 대한 시점을 2가지를 지원한다.
그 내용을 간략히 아래에 적어 보았다.
즉시 로딩
엔티티를 조회할 때 연관된 엔티티도 함께 조회함
예) @ManyToOne(fetch = FetchType.EAGER)
→ 즉시 로딩 최적화를 위해 가능하면 조인 쿼리를 사용
지연 로딩
연관된 엔티티를 실제 사용할 때 조회함
예) @ManyToOne(fetch = FetchType.LAZY)
그 다음으로 orphanRemoval 옵션을 제공한다.
연관관계가 사라진, 즉 null인 객체를 삭제한다고 한다.
- @OneToOne, @OneToMany에서만 사용이 가능하다.
- 부모 객체가 삭제되면 자식 객체의 데이터까지도 같이 삭제된다.
'스프링' 카테고리의 다른 글
[Spring boot JPA] @Query 수정, 삭제 (0) | 2023.03.15 |
---|---|
[Spring boot JPA] 엔티티의 양방향 관계 (0) | 2023.02.19 |