
[Springboot] JPA, N + 1 쿼리 증가 문제
·
Programming/Springboot
JPA를 사용하다 보면 LAZY로딩에 의해서 더 많은 쿼리가 나가는 경우가 발생한다. 쿼리를 보낼 때 연관된 내용을 바로 찾지 않고 필요할때 다시 쿼리를 보내서 찾는 LAZY 방식을 사용하여 N+1 쿼리 문제가 발생하게 된다. ToOne에 관계는 fetch join을 사용하여 한번에 값들을 모두 조회할 수 있지만 ToMany 같은 컬렉션 조회는 한개는 상관없지만 여러개를 fetch join을 걸게되면 MultipleBagFetchException 에러가 나게된다. properties설정에 하이버네이트의 default_batch_fetch_size 글로벌 옵션을 걸거나 필요한 엔티티에 어노테이션 @BatchSize를 붙이면 된다. 이 옵션은 설정한 size만큼 in절로 묶어서 한번에 가져오기 때문에 쿼리를..