컬렉션 조회 최적화 컬렉션 조회(일대다) 시 페치조인을 사용하면 페이징 문제가 발생한다. 예제를 통해 상황을 살펴보자. 페이징 문제의 원인은 하단 포스팅을 참고하자. https://sasca37.tistory.com/184?category=1218758 [Spring JPA] JPQL 중급 문법 경로 표현식 .(점)을 찍어 객체 그래프를 탐색하는 것을 경로 표현식이라고 한다. 경로 표현식 용어 정리 상태 필드 단순히 값을 저장하기 위한 필드 (ex : m.username) 연관 필드 연관관계를 위한 필 sasca37.tistory.com 주문내역에서 추가로 주문한 상품 정보를 조회하는 예제를 진행해보자. package jpabook.jpashop.domain; import com.fasterxml.jac..
조회용 샘플 데이터 추가 다음과과 같이 샘플 데이터를 만들어두자. userA 는 JPA1 BOOK1, JPA2 BOOK2 주문 userB 는 SPRING1 BOOK, SPRING2 BOOK 주문 package jpabook.jpashop; import jpabook.jpashop.domain.*; import jpabook.jpashop.domain.item.Book; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct..
API 개발 기본 포스트맨을 설치해서 API 개발 예제를 실습해보자. 포스트맨 설치 : https://www.getpostman.com Postman API Platform | Sign Up for Free Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster. www.postman.com 회원 등록 API package jpabook.jpashop.domain; import lombok.Getter; import lombok.Setter; import..
홈 화면과 레이아웃 홈 컨트롤러 등록 @Controller @Slf4j public class HomeController { @RequestMapping("/") public String home() { log.info("home controller"); return "home"; } } 롬복을 사용 시 @Slf4j 어노테이션을 통해 로깅 기능을 사용할 수 있다. HTML 적용 (타임리프) HELLO SHOP 회원 기능 회원 가입 회원 목록 상품 기능 상품 등록 상품 목록 주문 기능 상품 주문 주문 내역 resources/templates/home.html 생성 templates/fragments/header.html 생성 Home HELLO SHOP templates/fragments/bodyHeade..
주문 도메인 개발 구현 기능 상품 주문 주문 내역 조회 주문 취소 순서 주문, 주문상품 엔티티 개발 주문 리포지토리 개발 주문 서비스 개발 주문 검색 기능 개발 주문 기능 테스트 주문 엔티티 개발 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 { @Id @GeneratedValue @Column(name..
상품 도메인 개발 구현 기능 상품 등록 상품 목록 조회 상품 수정 순서 상품 엔티티 개발 (비즈니스 로직 추가) 상품 리포지토리, 서비스 개발 상품 기능 테스트 비즈니스 로직 추가 package jpabook.jpashop.domain; import jpabook.jpashop.exception.NotEnoughStockException; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(n..
회원 도메인 개발 구현 기능 회원 등록 회원 목록 조회 순서 회원 레포지토리 개발 회원 서비스 개발 회원 기능 테스트 회원 레포지토리 개발 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 MemberRepository { @PersistenceContext private EntityManager em..
메인 화면 메인 뷰는 다음과 같다. 이어서 요구사항에 대해 분석해보자. 애플리케이션 구현 준비 로그인, 권한 관리 X 파라미터 검증 및 예외 처리 X 상품은 도서만 사용 카테고리는 사용 X 배송 정보는 사용 X 아키텍처 계층형 구조 controller, web : 웹 계층 service : 비즈니스 로직, 트랜잭션 처리 repository : JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain : 엔티티가 모여있는 계층, 모든 계층에서 사용 개발 순서 : 서비스 , 리포지토리 계층 개발, 테스트 케이스 작성 및 검증, 마지막 웹 계층 적용 요구사항 분석 기능은 크게 회원, 상품, 주문, 기타 요구사항으로 나누어 볼 수 있다. 각 기능별 목록을 보자. 기능 목록 회원 기능 회원 등록 회원 조회 ..