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

Ch04. API 개발 고급(컬렉션 조회 최적화) - 주문 조회 V6(JPA에서 DTO로 직접 조회, 플랫 데이터 최적화)

webmaster 2021. 12. 21. 16:41
728x90

통합된 DTO를 만들어서 전부 다 출력한다.

메모라이즈 쿼리 최적화

@Data
public class OrderFlatDto {
    //DB에서 한번에 다가지고온다.
    private Long orderId;
    private String name;
    private LocalDateTime orderDate;
    private OrderStatus orderStatus;
    private Address address;
    private String itemName;
    private int orderPrice;
    private int count;

    public OrderFlatDto(Long orderId, String name, LocalDateTime orderDate, OrderStatus orderStatus, Address address, String itemName, int orderPrice, int count) {
        this.orderId = orderId;
        this.name = name;
        this.orderDate = orderDate;
        this.orderStatus = orderStatus;
        this.address = address;
        this.itemName = itemName;
        this.orderPrice = orderPrice;
        this.count = count;
    }
}

한 번에 담을 DTO

실행 결과

  • 페이징을 하지 못한다.
  • 장점
    • Query: 1번
  • 단점
    • 쿼리는 한번이지만 조인으로 인해 DB에서 애플리케이션에 전달하는 데이터에 중복 데이터가 추가되므로 상황에 따라 V5 보다 더 느릴 수 도 있다.
    • 애플리케이션에서 추가 작업이 크다.
    • 페이징 불가능
728x90