inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 JPA 다중 연관관계 조회시, n+1 문제 해결 방법

481

서규범

작성한 질문수 1

0

스프링 JPA 관련하여 질문드립니다!

JPA를 통해 조회 쿼리를 구현중인데, 일대다 관계에서는 컬렉션 패치조인을 사용하여 N+1 문제를 방지한다고 알고 있습니다.

다만, 1:N 관계가 중첩으로 있을 경우,

예를 들어서 다음과 같은 상황입니다.

구역 (1:N) 테이블 (1:N) 주문 항목 (1:1) 옵션 그룹 (1:N) 옵션

다음과 같이 1:N 관계가 3중, 4중으로 있을 경우, 다중 패치조인은 불가한걸로 알고 있는데, JPA 로는 해결하지 못하는 상황일까요??

 

조언 부탁드립니다.

 

아래와 같은 형식으로 API 결과를 반환하려 합니다.

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요. 스프링 JPA에서 다중 연관관계를 조회할 때 N+1 문제를 해결하는 방법에 대해 질문하셨습니다. 1:N 관계가 중첩된 상황에서 다중 패치조인은 일반적으로 사용할 수 없습니다.

복잡한 다중 연관관계를 조회하는 상황에서는 JPQL이나 Criteria API를 사용하여 쿼리를 직접 작성할 수 있습니다. 예를 들어, 복잡한 쿼리를 작성하고 그 결과를 DTO로 매핑하여 반환할 수 있습니다. 이 경우에는 원하는 데이터를 한 번에 조회하여 N+1 문제를 해결할 수 있습니다.

또는, fetch join을 이용하여 중첩된 관계까지 한 번에 조회할 수 있습니다. fetch join을 중첩해서 사용하는 경우, 쿼리가 복잡해질 수 있고 성능에 영향을 줄 수 있으므로 주의해야 합니다.

조금 더 구체적인 상황과 코드를 알려주시면 더 자세한 도움을 드릴 수 있을 것 같습니다. 감사합니다!

맥유저 입장의 고려해주세요

2

66

1

케이테스트 서버 운영 방법

2

52

1

수업 잘 들었습니다.

2

24

2

실행과정 질문입니다.

2

17

1