스프링

    API 개발 고급 - 컬렉션 조회 최적화

    API 개발 고급 - 컬렉션 조회 최적화

    API 개발 고급 - 컬렉션 조회 최적화 주문 조회 V1: 엔티티 직접 노출 주문 조회 V2: 엔티티를 DTO로 변환 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화 주문 조회 V3.1: 엔티티를 DTO로 변환 - 페이징과 한계 돌파 주문 조회 V4: JPA에서 DTO 직접 조회 주문 조회 V5: JPA에서 DTO 직접 조회 - 컬렉션 조회 최적화 주문 조회 V6: JPA에서 DTO로 직접 조회, 플랫 데이터 최적화 주문내역에서 추가로 주문한 상품 정보를 추가로 조회하자.(OneToMany)를 조회하고, 최적화하는 방법을 알아보자. Order 기준으로 컬렉션인 OrderItem 와 Item 이 필요하다. 앞의 예제에서는 toOne(OneToOne, ManyToOne) 관계만 있었다. 이번에..

    API 개발 고급 - 지연 로딩과 조회 성능 최적화

    API 개발 고급 - 지연 로딩과 조회 성능 최적화

    API 개발 고급 - 지연 로딩과 조회 성능 최적화 간단한 주문 조회 V1: 엔티티를 직접 노출 간단한 주문 조회 V2: 엔티티를 DTO로 변환 간단한 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화 간단한 주문 조회 V4: JPA에서 DTO로 바로 조회 주문 + 배송정보 + 회원을 조회하는 API를 만들자 지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해보자. 참고: 지금부터 설명하는 내용은 정말 중요합니다. 실무에서 JPA를 사용하려면 100% 이해해야 합니다. > 안그러면 엄청난 시간을 날리고 강사를 원망하면서 인생을 허비하게 됩니다. 간단한 주문 조회 V1: 엔티티를 직접 노출 ( 엔티티 노출은 사용 권장 X, 꼭 필요한 정보만 노출 ) OrderSimpleApiControl..

    API 개발 고급 - 조회용 샘플 데이터 입력

    API 개발 고급 - 조회용 샘플 데이터 입력

    API 개발 고급 - 조회용 샙플 데이터 입력 조회용 샘플 데이터 입력 조회용 샘플 데이터 입력 API 개발 고급 설명을 위해 샘플 데이터를 입력하자. userA JPA1 BOOK JPA2 BOOK userB SPRING1 BOOK SPRING2 BOOK package myjpabook.jpashop; import lombok.RequiredArgsConstructor; import myjpabook.jpashop.domain.*; import myjpabook.jpashop.domain.item.Book; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactiona..

    API 개발 기본

    API 개발 기본

    API 개발 기본 회원 등록 API 회원 수정 API 회원 조회 API postman 설치 (https://www.getpostman.com) 회원 등록 API package myjpabook.jpashop.api; import lombok.Data; import lombok.RequiredArgsConstructor; import myjpabook.jpashop.domain.Member; import myjpabook.jpashop.service.MemberService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org..

    웹 계층 개발

    웹 계층 개발

    웹 계층 개발 홈 화면 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 상품 등록 상품 목록 상품 수정 변경 감지와 병합 상품 주문 홈 화면과 레이아웃 홈 컨트롤러 등록 package jpabook.jpashop.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HomController { Logger log = L..

    주문 도메인 개발

    주문 도메인 개발

    주문 도메인 개발 구현 기능 상품 주문 주문 내역 조회 주문 취소 목차 주문 엔티티, 주문상품 엔티티 개발 주문 리포지토리 개발 주문 서비스 개발 주문 검색 기능 개발 주문 기능 테스트 주문, 주문상품 엔티티 개발 주문 엔티티 개발 주문 엔티티 코드 package jpabook.jpashop.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "orders") @Getter @Setter public class Order { @I..

    상품 도메인 개발

    상품 도메인 개발

    상품 도메인 개발 구현 기능 상품 등록 상품 목록 조회 상품 수정 목차 상품 엔티티 개발(비즈니스 로직 추가) 상품 리포지토리 개발 상품 서비스 개발 상품 기능 테스트 -> 여기선 생략할거임 (바로앞 테스트와 비슷) 상품 엔티티 개발(비즈니스 로직 추가) 상품 엔티티 코드 package jpabook.jpashop.domain.item; import jpabook.jpashop.domain.Category; import jpabook.jpashop.exception.NotEnoughStockException; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import jav..

    회원 도메인 개발

    회원 도메인 개발

    회원 도메인 개발 구현 기능 회원 등록 회원 목록 조회 목차 회원 엔티티 코드 다시 보기 ( 앞에서 개발 했음 Member ) 회원 리포지토리 개발 회원 서비스 개발 회원 기능 테스트 회원 리포지토리 개발 회원 리포지토리 코드 package jpabook.jpashop.repository; import jpabook.jpashop.domain.Member; import org.springframework.stereotype.Repository; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.util.List; @Repository public class MemberReposito..

    애플리케이션 구현 준비

    애플리케이션 구현 준비

    애플리케이션 구현 준비 목차 구현 요구사항 애플리케이션 아키텍처 구현 요구사항 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 예제를 단순화 하기 위해 다음 기능은 구현X -> 나중에 따로 해보자! 로그인과 권한 관리X 파라미터 검증과 예외 처리X (최소화) 상품은 도서만 사용 카테고리는 사용X 배송 정보는 사용X 애플리케이션 아키텍처 계층형 구조 사용 controller, web: 웹 계층 service: 비즈니스 로직, 트랜잭션 처리 repository: JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain: 엔티티가 모여 있는 계층, 모든 계층에서 사용 패키지 구조 jpabook.jpashop domain excep..

    도메인 분석 설계

    도메인 분석 설계

    도메인 분석 설계 목차 요구사항 분석 도메인 모델과 테이블 설계 엔티티 클래스 개발 엔티티 설계시 주의점 요구사항 분석 기능 목록 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 도메인 모델과 테이블 설계 회원, 주문, 상품의 관계 : 회원은 여러 상품을 주문할 수 있다. 그리고 한 번 주문할 때 여러 상품을 선택할 수 있으므로 주문과 상품은 다대다 관계다. 하지만 이런 다대다 관계는 관계형 데이터베이스는 물론이고 엔티티에서도 거의 사용하지 않는다. 따라서 그림처럼 ..