반응형
즉시로딩(FetchType.EAGER)
연관관계 맺을 때 즉시로딩 설정 시 연관 엔티티 즉시 조회
N+1 문제
주로 즉시로딩(FetchType.EAGER)으로 설정해두고, JPQL을 사용할 때 발생
JPQL의 경우 바로 SQL로 변환됨
예)
Order entity에서 Member entity를 즉시로딩으로 설정했을 때
JPQL: select o From order o; → SQL: select * from order;
EAGER 설정이 되어있어도 조인해서 읽어오지 않고, 단건 조회를 수행하게 됨
→ 단건 조회한 후, 조회한 수 만큼 연관 테이블을 가져오는 쿼리를 N개 던지게 되서 성능이슈 발생
해결
fetch 조인 또는 엔티티 그래프를 이용해서 조회
주의
기본 fetch 전략
@xToOne(@ManyToOne) : fetch = FetchType.EAGER
@xToMany(@OneToMany) : fetch = FetchType.LAZY
→ @xToOne은 전부 LAZY로 설정해줄 것
반응형
'개발 > JPA' 카테고리의 다른 글
[JPA] 변경감지와 병합(merge) (0) | 2022.10.26 |
---|---|
실전! 스프링 부트와 JPA활용 1 :: JPA와 DB 설정, 동작확인 - 테스트 실행 도중 에러 정리 (0) | 2022.10.22 |
[JPA] 지연로딩과 조회 성능 최적화 2 - fetch join, DTO로 조회 (0) | 2022.04.19 |
[JPA] 지연로딩과 조회 성능 최적화 1 - xToOne (0) | 2022.04.18 |
[JPA] JPQL fetch join / 연관된 entity 한번에 select / distinct로 엔티티 중복 제거 / fetch join 페이징 안 될 때 @BatchSize 설정 (0) | 2022.04.12 |
댓글