[실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화] API 개발 고급(3): 컬렉션 조회 최적화(2)
·
Back-End/JPA
[작성일: 2023. 10. 05] 컬렉션 조회 최적화(2)주문 조회 V4: JPA에서 DTO 직접 조회@RestController@RequiredArgsConstructorpublic class OrderApiController { private final OrderRepository orderRepository; private final OrderQueryRepository orderQueryRepository; // ... 코드생략 @GetMapping("/api/v4/orders") public List ordersV4(){ return orderQueryRepository.findOrderQueryDtos(); }} @Datapublic class O..
[실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화] API 개발 고급(3): 컬렉션 조회 최적화(1)
·
Back-End/JPA
[작성일: 2023. 10. 03] 컬렉션 조회 최적화(1)주문 조회 V1: 엔티티 직접 노출주문내역에서 추가로 주문한 상품 정보를 추가로 조회하려면 Order 기준으로 컬렉션인 OrderItem과 Item이 필요하다.지금은 OneToOne, ManyToOne 관계만 있다.이번에는 컬렉션인 일대다 관계(OneToMany)를 조회하고 최적화 하는 방법을 알아보자. @RestController@RequiredArgsConstructorpublic class OrderApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/orders") public List ordersV1() { Lis..
[실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화] API 개발 고급(2): 지연 로딩과 조회 성능 최적화
·
Back-End/JPA
[작성일: 2023. 10. 01] 간단한 주문 조회V1: 엔티티를 직접 노출주문 + 배송정보 + 회원을 조회하는 API를 만들고, 지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해 보자. @RestController@RequiredArgsConstructorpublic class OrderSimpleApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/simple-orders") public List ordersV1() { List all = orderRepository.findAllByString(new OrderSearch()); return all; ..
[실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화] API 개발 고급(1): 조회용 샘플 데이터 입력
·
Back-End/JPA
[작성일: 2023. 09. 29] 조회용 샘플 데이터 입력 API 개발 고급 설명을 위해 샘플 데이터를 입력하자. user A는 JPA1 BOOK, JPA2 BOOK을 주문했다.user B는 SPRING1 BOOK, SPRING2 BOOK을 주문했다.최종적으로는 주문 2건이 만들어진다. @Component@RequiredArgsConstructorpublic class InitDb { private final InitService initService; @PostConstruct public void init() { initService.dbInit1(); } @Component @Transactional @RequiredArgsConstructor ..
[실전! 스프링 부트와 JPA 활용 2 - API 개발과 성능 최적화] API 개발 기본
·
Back-End/JPA
[작성일: 2023. 09. 28]  회원 등록 API@RestController@RequiredArgsConstructorpublic 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 @AllArgsConstructor sta..
[실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발] 웹 계층 개발
·
Back-End/JPA
[작성일: 2023. 08. 28]  홈 화면과 레이아웃HomeController와 html(타임리프 사용, 코드 생략)을 작성해서 기본적인 홈 화면 레이아웃을 만들어주었다.@Slf4j@Controllerpublic class HomeController { @RequestMapping("/") public String home() { log.info("home controller"); return "home"; }}  참고: hierachical-style layouts예제에서는 뷰 템플릿을 간단하게 작성하기 위해 header, footer 같은 템플릿 파일을 반복해서 포함한다. 다음 링크의 Hierachical-style layouts을 참고하려면 이런 부분도 ..