2월 24일 JPA API개발 고급

회사의 직접적인 노출

컬렉션인 1:n 관계를 쿼리하고 최적화하는 방법을 알아보겠습니다.

@GetMapping(“/api/v1/orders”)

공개 목록주문V1(){

목록 모두 = orderRepository.findAllByString(새 orderSearch())

// 결과 값이 직접 배포되는 경우 지연 로딩 필드는 null입니다.

//따라서 지연 로딩 필드를 호출하여 값을 로드해야 합니다.

for(순서: 모두){

// 값 강제 초기화, 지연 로딩 필드를 터치하여 로드

order.getMember().getName();

order.getDelivery().getAddress();

목록 orderItems = order.getOrderItems();

for(주문 항목 orderItem : 주문 항목){

orderItem.getItem().getName();

}

//OrderItem도 지연 로드되고 그 안에 있는 항목도 지연 로드되므로 이름을 모두 지정합니다.

}

// 람다 식

orderItems.stream().forEach(o -> o.getItem().getName())

// 엔터티는 직접 노출되어서는 안되며 DTO에 둘러싸여 있어야 합니다.

모든 컬렉션을 DTO에 압축하는 것은 어렵습니다.

}