JPA N+1 발생 이유

어디든 배우자·2023년 11월 1일
0

누가 발생 시키는가

연관 관계를 가진 Entity를 조회할 때 발생

어떤 상황에서

1. JPA 패치 전략이 EAGER 전략으로 데이터를 조회하는 경우

2. JPA 패치 전략이 LAZY 전략으로 데이터를 가져온 이후에 연관 관계인 하위 Entity를 다시 조회하는 경우

EAGER 즉시 로딩

연관 관계에 있는 Entity를 전부 가져옴
@ManyToOne, @OneToOne은 기본값으로 즉시 로딩이 설정되어 있다고 함.

LAZY 지연 로딩

연관 관계에 있는 Entity를 가져오지 않고 호출 시 가져옴.

N+1 문제

연관 관계에서 발생하는 이슈로 연관 관계가 설정된 Entity를 조회할 때
조회한 갯수보다 쿼리가 더 나와 성능 저하를 이르키는 것.

요약

fetch join을 사용하자.
아주아주 요약 해서, 연관된 Entity나 컬렉션을 SQL 한 번에 조회하는 기능
fetch join은 나중에 좀 더 공부를 하도록 하자.

profile
다 흡수하기.

0개의 댓글