Spring/SpringBoot&JPA

    [스프링부트와 JPA 활용 2] Section2. API 개발 고급 - 준비

    API 개발 고급 소개 조회용 샘플 데이터 입력 지연 로딩과 조회 성능 최적화 컬렉션 조회 최적화 페이징과 한계 돌파 OSIV와 성능 최적화 조회용 샘플 데이터 입력 userA JPA1 BOOK JPA2 BOOK userB SPRING1 BOOK SPRING2 BOOK 두 건의 주문이 접수된 것이다. jpashop/src/main/java/jpabook/jpashop/InitDb.java 추가 package jpabook.jpashop; import jakarta.annotation.PostConstruct; import jakarta.persistence.EntityManager; import jpabook.jpashop.domain.*; import jpabook.jpashop.domain.item...

    [스프링부트와 JPA 활용 2] Section1 중 "회원 삭제 API"

    JPA 활용2를 듣던 도중, 회원 등록, 조회, 수정 API는 강의에서 다루나 삭제 API를 강의에서 안 다루어 직접 코드를 짜 보았다. MemberApiController.java 에 코드 추가 //회원 삭제 API @DeleteMapping("/api/v3/members/{id}") public ResponseEntity deleteMemberV1(@PathVariable ("id") Long id) { memberService.delete(id); return new ResponseEntity("회원이 성공적으로 삭제되었습니다", HttpStatus.OK); } MemberService.java 에 코드 추가 //회원 삭제 API @Transactional public void delete(Long..

    [스프링부트와 JPA 활용 2] Section1. API 개발 기본

    회원 등록 API 단순히 SQL로 API를 끌어오지 않아도 된다. JPA는 Entity가 있기 때문에 API를 설계할 때 주의해야 한다. API를 test 하기 위해 Postman을 설치한다. Download Postman | Get Started for Free Download Postman | Get Started for Free Try Postman for free! Join 25 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster. www.postman.com 템플릿 엔진을 사용하여 렌더링 하는 Controller와 API 스타일의 Controll..

    [스프링부트와 JPA 활용 1] Section7. 웹 계층 개발

    홈 화면과 레이아웃 jpashop/src/main/java/jpabook/jpashop/controller/HomeController.java 생성 package jpabook.jpashop.controller; import lombok.extern.slf4j.Slf4j; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @Slf4j public class HomeController { @RequestMapping("/") public String home(){ log.info..

    [스프링부트와 JPA 활용 1] Section6. 주문 도메인 개발

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

    [스프링부트와 JPA 활용 1] Section5 중 "상품 기능 테스트"

    김영한 강사님의 "스프링부트와 JPA 활용1"을 듣다 보면 Section 5에서 "상품 기능 테스트"를 생략하신 것을 볼 수 있다. 이 테스트가 이전에 강의에서 다룬 테스트와 유사하여 생략하였다고 하셨는데 복습겸 궁금하여 테스트 코드를 직접 작성하여 보였다. MemberServiceTest.java를 참고하여 작성하였고 //given, //when, //then 으로 나누어 작성하니 도움이 많이 되었다. 테스트한 기능은 상품 등록, 상품 목록 조회, 상품 조회이다. 파일 위치는 jpashop/src/test/java/jpabook/jpashop/service/ItemServiceTest.java 으로 지정하였다. package jpabook.jpashop.service; import jpabook.jpa..

    [스프링부트와 JPA 활용 1] Section5. 상품 도메인 개발

    상품 엔티티 개발 (비즈니스 로직 추가) 구현 기능 상품 등록 상품 목록 조회 상품 수정 순서 상품 엔티티 개발 (비즈니스 로직 추가) 상품 리포지토리 개발 상품 서비스 개발, (상품 기능 테스트) item.java 수정 package jpabook.jpashop.domain.item; import jakarta.annotation.ManagedBean; import jakarta.persistence.*; import jpabook.jpashop.domain.Category; import jpabook.jpashop.exception.NotEnoughStockException; import lombok.Getter; import lombok.Setter; import java.util.ArrayList..

    [스프링부트와 JPA 활용 1] Section4. 회원 도메인 개발

    회원 리포지토리 개발 jpashop/src/main/java/jpabook/jpashop/repository/MemberRepository.java 생성 package jpabook.jpashop.repository; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jpabook.jpashop.domain.Member; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class MemberRepository { @PersistenceContext private Enti..

    [스프링부트와 JPA 활용 1] Section3. 애플리케이션 구현 준비

    구현 요구사항 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 애플리케이션 아키텍처 계층형 구조 사용 controller, web : 웹 계층 service : 비즈니스 로직, 트랜잭션 처리 repository : JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain : 엔티티가 모여 있는 계층, 모든 계층에서 사용 패키지 구조 jpabook.jpashop domain exception repository service web 참고 controller은 repository에도 바로 접근할 수 있는 그러나 단방향으로 설정할 예정 개발 순서 서비스/리포지토리 계층 개발 → 테스트 케이스 작성하여 검증 → 마지막에 웹 계층 적용

    [스프링부트와 JPA 활용 1] Section2. 도메인 분석 설계

    요구사항 분석 회원 기능 : 회원 가입, 회원 목록 상품 기능 : 상품 등록, 상품 목록 주문 기능 : 상품 주문, 주문 내역 더보기 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 도메인 모델과 테이블 설계 1. 도메인 모델 설계 회원 : 주문 = 1 : N(*) 주문 : 상품 = N : N → 보통 사용하지 않는다 → 1 : N or N : 1 로 변경 주문 : 배송 = 1 : 1 상품 : 카테고리 = N : N 2. 엔티티 설계 (1) 회원 엔티티 Order와 ..