스프링데이터 + JPA/API 개발 17

6. 지연로딩과 조회성능 최적화

주문(Order) + 배송정보(Delivery) + 회원(Member) 조회하는 API를 만들거임. 점차적으로 성능을 향상시킬거임. xToOne은 기본이 즉시로딩이라, 명시적으로 LAZY로딩으로 해 줘야 함. 일단은, 이런 연관관계 무시하고, @GetMapping("/api/v1/simple-orders") public List ordersV1(){ List all = orderRepository.findAllString(new OrderSearch()); return all; } 이렇게 하면 무한루프에 빠짐. 왜냐하면, @Entity @Table(name = "orders") @Getter @NoArgsConstructor(access = AccessLevel.PUBLIC) public class Or..

5. 조회용 샘플 데이터 입력

이렇게 두 건의 주문을 만들거임 @Component @RequiredArgsConstructor public class InitDb { private final InitService initService; @PostConstruct public void init(){ initService.dbInit1(); initService.dbInit2(); } @Component @Transactional @RequiredArgsConstructor static class InitService{ private final EntityManager em; public void dbInit1(){ Member member = createMember("userA", "서울", "1","1111"); em.persist(..

4. API 성능 최적화

지연 로딩과 조회 성능 최적화 컬렉션 조회 최적화 페이징과 한계 돌파 OSIV와 성능 최적화 보통 이 범주안에 문제가 있음. CRUD는 문제 대부분이 조회임. 사람들이 조회도 많이 하고 insert같은 건 쉽기 때문 지연로딩과 조회 성능 최적화 n+1문제, 쿼리 하나면 될게 여러 개 나가는 문제를 해결 컬렉션 조회 최적화 연관관계가 있는 컬렉션 조회 최적화 페이징과 한계 돌파 member 한개에 가지고 있는 order가 여러개라면.. 페이징은 어떻게 될 건지.. 다 JPA기본에서 했던 내용이긴 함. OSIV와 성능 최적화 Open Session In-View 인데 이건 처음 봄. 이걸 사용하면 지연로딩 이런데서 편하게 되는데 이걸 사용 안하게 되면 LAZY로딩 에러를 자주 만나게 된다고 함. 이걸 언제 ..

2. 회원 수정 API

수정같은 거 할 때 사용하는 용도의 http 메소드가 put https://qwefdg3.tistory.com/190 장점이 멱등하다고 표현하는데, 캐시같은 거임. 같은 요청 계속 보내도 똑같은 내용이면 처리 안함. @PutMapping("api/v2/members/{memberId}") public UpdateMemberResponse updateMemberV2( @PathVariable("memberId") Long id, @RequestBody @Valid UpdateMemberRequest request){ memberService.update(id, request.getName()); Member findMember = memberService.findOne(id); return new Upda..