지수의 개발 기록장

고정 헤더 영역

글 제목

메뉴 레이어

지수의 개발 기록장

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (43)
    • 토론, 독서 (3)
    • 프로그래밍 (37)
      • AWS (2)
      • JPA (2)
      • Python (6)
      • 기타 (5)
      • Architecture (16)
      • kubernetes (3)
      • kotlin (1)
      • kafka (2)

검색 레이어

지수의 개발 기록장

검색 영역

컨텐츠 검색

프로그래밍/JPA

  • [JPA] N+1 조회 문제와 해결방법

    2020.07.10 by jisooo

  • [Java, JPA] 도메인 객체간 연관관계에서 즉시로딩과 지연로딩 and 프록시 객체

    2019.08.11 by jisooo

[JPA] N+1 조회 문제와 해결방법

JPA의 N+1 조회 문제란? 예시) SQL 1번으로 100명의 회원을 조회하였는데, 각 회원마다 주문한 상품을 추가로 조회하기 위해 100번의 SQL을 추가로 실행하는 상황을 말한다. 한번 SQL을 실행해서 조회된 결과 수만큼 N번 SQL을 추가로 실행한다고 해서 N+1 문제라 한다. N+1 문제는 엔티티 글로벌 페치전략에 즉시 로딩을 사용할 때 발생할 수 있다. JPA를 사용하면서 성능상 가장 조심해야 하는 문제가 바로 N+1 문제이다. em.find()메소드로 엔티티를 조회할 때 연관된 엔티티를 로딩하는 전략이 즉시 로딩이면 데이터베이스에 JOIN 쿼리를 사용해서 한 번에 연관된 엔티티까지 조회한다. Order order = em.find(Order.class, 1L); // 즉시로딩으로 위 엔티티..

프로그래밍/JPA 2020. 7. 10. 00:46

[Java, JPA] 도메인 객체간 연관관계에서 즉시로딩과 지연로딩 and 프록시 객체

특정 게시글을 클릭 할 때, 게시글과, 각 게시글에 딸린 첨부파일들을 데이터베이스에서 로딩하여 엔티티객체에 저장하여야하는데, 구현한 로직해서 게시글을 누르면 org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: kr.com.test.jpa.domain.Board.board_files, could not initialize proxy - no Session 위와 같이 LazyInitializationException이 발생하였다. 에러를 구글링해보니 엔티티 간 연관관계 설정시에 즉시로딩, 지연로딩에 관한 설정이 필요했다. 보통 엔티티를 설계할 때, 엔티티와 연관된 또다른 엔티티들이 같이 포함되어..

프로그래밍/JPA 2019. 8. 11. 10:23

추가 정보

인기글

최신글

페이징

이전
1
다음
GITHUB
지수의 개발 기록장 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바