작성
·
56
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 오리쉐리님.
N+1 문제는 JPA를 사용하는 개발자가 자주 직면하는 이슈 중 하나입니다. 이를 이해하는 데 도움이 될 내용을 설명하겠습니다.
N+1 문제란:
Team
과 관련된 Member
를 즉시 로딩(EAGER) 설정을 통해 가져올 경우, 초기에는 Team
을 조회하기 위한 쿼리가 나가고(N), 그와 관련된 각각의 Member
들을 조회하기 위해 N번의 쿼리가 추가로 발생하게 됩니다.즉시 로딩 (EAGER Loading):
지연 로딩 (Lazy Loading)과 N+1 해결 방법:
페치 조인(Fetch Join):
JPQL에서의 사용:
FETCH JOIN
키워드를 사용하면, 지연 로딩 상황에서도 연관된 모든 데이터를 한 번에 가져와 N+1 문제를 피할 수 있습니다.질문에 도움을 드리기 위해 관련된 기존 질문을 몇 가지 찾아보았습니다. 아래 링크들을 확인해 보시면 더 많은 정보를 얻으실 수 있습니다:
이해가 안 되시거나 추가 질문이 있으시면 언제든지 추가 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요. 오리쉐리님
즉시로딩시에
예를 들어서 팀 -> 회원의 관계가 있을 때 팀만 조회하게 되면 N + 1이 발생합니다.
왜냐하면 팀을 select 쿼리하면 팀 10개가 조회할 수 있습니다. 이후 각 팀별로 데이터가 즉시 로딩되어야 하기 때문에 N + 1 문제가 발생합니다.
감사합니다.