본문 바로가기

Spring/Spring Boot + JPA8

[Spring Boot + JPA] API 개발과 성능 최적화 - 4. OSIV와 성능 최적화 📌 OSIV와 성능 최적화 Open Session In View: 하이버네이트 Open EntityManager In View: JPA (관례상 OSIV라 한다.) OSIV ON spring.jpa.open-in-view : true (OSVI 활성화 :: 기본값) 서버 구동 시 다음과 같은 warn로그가 남는 것을 확인할 수 있고 이 기본값을 뿌리면서 애플리케이션 시작 시점에 warn 로그를 남기는 것은 이유가 있다. WARN 27128 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be perf.. 2023. 5. 17.
[Spring Boot + JPA] API 개발과 성능 최적화 - 3. 컬렉션 조회 최적화 주문내역에서 추가로 주문한 상품 정보를 추가로 조회하자. Order 기준으로 컬렉션인 OrderItem와 Item 이 필요하다. 앞의 예제에서는 toOne(OneToOne, ManyToOne) 관계만 있었다. 이번에는 컬렉션인 일대다 관계 (OneToMany)를 조회하고, 최적화하는 방법을 알아보자. 📌 주문 조회 V1 : 엔티티 직접 노출 @RestController @RequiredArgsConstructor public class OrderApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/orders") public List orderV1() { List all = orderRepository.fin.. 2023. 5. 16.
[Spring Boot + JPA] API 개발과 성능 최적화 - 2. 지연 로딩과 조회 성능 최적화 📌 간단한 주문 조회 V1: 엔티티를 직접 노출 먼저 엔티티를 직접 반환하는 것은 좋지 않다. 여기서는 예제만을 위해 엔티티를 직접 노출하는 소스를 작성했다. OrderSimpleApiController 생성 @RestController @RequiredArgsConstructor public class OrderSimpleApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/sample-orders") public List orderV1() { List all = orderRepository.findAllByString(new OrderSearch()); return all; } } 해당 API를 호출하면 .. 2023. 5. 1.
[Spring Boot + JPA] API 개발과 성능 최적화 - 1. API 개발 기본 📌 회원 등록 API 엔티티 자체를 request 받는 saveMemberV1 코드 @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) { Long id = memberService.join(member); return new CreateMemberResponse(id); } @Data static class CreateMemberResponse { pri.. 2023. 5. 1.