CH02 컬렉션 조회 최적화
주문 조회 V1: 엔티티 직접 노출
주문 조회 V2: 엔티티를 DTO로 변환
@Data
static class OrderDto {
private Long orderId;
private String name;
private LocalDateTime orderDate; //주문시간
private OrderStatus orderStatus;
private Address address;
private List<OrderItemDto> orderItems;
public OrderDto(Order order) {
orderId = order.getId();
name = order.getMember().getName();
orderDate = order.getOrderDate();
orderStatus = order.getStatus();
address = order.getDelivery().getAddress();
orderItems = order.getOrderItems().stream()
.map(orderItem -> new OrderItemDto(orderItem))
.collect(toList());
}
}
@Data
static class OrderItemDto {
private String itemName;//상품 명
private int orderPrice; //주문 가격
private int count; //주문 수량
public OrderItemDto(OrderItem orderItem) {
itemName = orderItem.getItem().getName();
orderPrice = orderItem.getOrderPrice();
count = orderItem.getCount();
}
}주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화
주문 조회 V3.1: 엔티티를 DTO로 변환 - 페이징과 한계 돌파
컬렉션을 페치 조인하면 페이징이 안되는 이유
컬렉션을 페이징 해야한다면 어떻게?
default_batch_fetch_size 의 적절한 크기
주문 조회 V4: JPA에서 DTO 직접 조회
주문 조회 V5: JPA에서 DTO 직접 조회 - 컬렉션 조회 최적화
주문 조회 V6: JPA에서 DTO로 직접 조회, 플랫 데이터 최적화
Last updated