-
[스프링부트/웹 애플리케이션 개발]API 개발 고급-2스프링&스프링부트 2023. 1. 11. 16:40
- 지연 로딩과 조회 성능 최적화
- 주문 + 배송정보 + 회원을 조회하는 API 만들기
- 지연 로딩 때문에 발생하는 성능 문제 단계적 해결
간단한 주문 조회V1 : 엔티티를 직접 노출
package jpabook.jpashop.api; import jpabook.jpashop.domain.Order; import jpabook.jpashop.repository.OrderRepository; import jpabook.jpashop.repository.OrderSearch; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; // xToOne (ManyToOne, OneToOne) //order //order -> member (ManyToOne) //order -> delivery (OneToOne) @RestController @RequiredArgsConstructor public class OrderSimpleApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/simple-orders") public List<Order> ordersV1() { List<Order> all = orderRepository.findAllByString(new OrderSearch()); return all; } }
JpashopApplication
@SpringBootApplication public class JpashopApplication { public static void main(String[] args) { @Bean Hibernate5Module hibernate5Module() { return new Hibernate5Module(); } }
buil.gradle > dependencies 추가
dependencies { implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5' }
- null > lazy 로딩이라서
@GetMapping("/api/v1/simple-orders") public List<Order> ordersV1() { List<Order> all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { order.getMember().getName(); //lazy 강제 초기화 order.getDelivery().getAddress(); //lazy 강제 초기화 } return all; }
@SpringBootApplication public class JpashopApplication { @Bean Hibernate5Module hibernate5Module() { Hibernate5Module hibernate5Module = new Hibernate5Module(); //강제 지연 로딩 설정 //hibernate5Module.configure(Hibernate5Module.Feature.FORCE_LAZY_LOADING, true); return new Hibernate5Module(); } }
728x90'스프링&스프링부트' 카테고리의 다른 글
[스프링부트/웹 애플리케이션 개발]API 개발 고급-4 (0) 2023.01.12 [스프링부트/웹 애플리케이션 개발]API 개발 고급-3 (0) 2023.01.12 [스프링부트/웹 애플리케이션 개발]API 개발 고급-1 (1) 2023.01.11 [스프링부트/웹 애플리케이션 개발]회원 조회 API (0) 2023.01.11 [스프링부트/웹 애플리케이션 개발]API 개발 기본 (0) 2023.01.11