실전! 스프링 부트와 JPA 활용2(API 개발과 성능 최적화)

Ch03. API 개발 고급(지연 로딩과 조회 성능 최적화) - 간단한 주문 조회 V2(Entity -> DTO로 변환)

webmaster 2021. 12. 20. 11:47
728x90

Entity를 반환하지 말고, Dto를 만들어서 구현해라

  • DTO로 반환하지만, 쿼리가 너무 많이 실행된다.
    • order 조회 1번(order 조회 결과 수가 N이 된다.)
    • order -> member 지연 로딩 조회 N 번
    • order -> delivery 지연 로딩 조회 N 번
    • 예) order의 결과가 4개면 최악의 경우 1 + 4 + 4번 실행된다.(최악의 경우)
      • 지연 로딩은 기본적으로 영속성 컨택스트를 먼저 탐색하기 때문에 만약 해당 데이터가 영속성 컨택스에 있다면 쿼리를 생략한다.
    • Eager로 변경해도 성능 향상을 기대할 수 없다(성능이 너무 안 좋아진다)
  • 엔티티를 DTO로 변환하는 일반적인 방법이다

 

728x90