상세 컨텐츠

본문 제목

JPA N+1 문제

백엔드 공부진행도/JPA

by myeongjaechoi 2024. 12. 2. 17:29

본문

JPA N+1 문제란?

  • 연관 관계가 설정된 엔티티를 조회할 경우, 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 추가로 발생하는 현상
  • Ex) 댓글 10개 달린 게시글 1개 조회하는데 총 11개의 쿼리(게시글 조회 1개 + 각 게시글의 댓글 조회 10개)가 실행
  • 즉시로딩으로 설정하고 findAll()을 실행하면 N+1 문제 발생
    • findAll()은 select u from User u라는 JPQL 구문으로 생성해서 실행하기 때문
  • 지연로딩이란? - 연관된 객체를 사용하는 시점에 로딩을 해주는 방법
  • 따라서 지연 로딩인 fetch join을 사용
  • Ex) @ManyToOne(fetch = FetchType.LAZY)

프록시 객체란?

  • 지연 로딩을 사용할 때 실제 엔티티 객체 대신 가짜 객체가 필요한데, 이것이 프록시 객체

 

'백엔드 공부진행도 > JPA' 카테고리의 다른 글

엔티티 매니저와 1차 캐시  (2) 2024.11.27

관련글 더보기