회사의 직접적인 노출
컬렉션인 1:n 관계를 쿼리하고 최적화하는 방법을 알아보겠습니다.
@GetMapping(“/api/v1/orders”)
공개 목록
목록
// 결과 값이 직접 배포되는 경우 지연 로딩 필드는 null입니다.
//따라서 지연 로딩 필드를 호출하여 값을 로드해야 합니다.
for(순서: 모두){
// 값 강제 초기화, 지연 로딩 필드를 터치하여 로드
order.getMember().getName();
order.getDelivery().getAddress();
목록
for(주문 항목 orderItem : 주문 항목){
orderItem.getItem().getName();
}
//OrderItem도 지연 로드되고 그 안에 있는 항목도 지연 로드되므로 이름을 모두 지정합니다.
}
// 람다 식
orderItems.stream().forEach(o -> o.getItem().getName())
// 엔터티는 직접 노출되어서는 안되며 DTO에 둘러싸여 있어야 합니다.
모든 컬렉션을 DTO에 압축하는 것은 어렵습니다.
}