Spring/실전! 스프링부트와 JPA 활용1 7

상품 등록/ 목록 조회/ 수정 구현하기

일반적인 웹 애플리케이션 계층 구조 다시한번 상기하기 위해서..! Controller -> Service -> Repository -> DB * 개발 순서 : 1) 엔티티 개발 2) 리포지토리 개발 3) 서비스 개발 4) 테스트 5) 컨트롤러 개발 6) 웹 계층 적용 1. Domain - Item.java - Book.java Item 은 추상화 객체이며, 해당 프로젝트에서만 Book 만 사용하는것으로 개발. 2. Repository - ItemRepository.java @Repository : 스프링 빈으로 등록, JPA 예외를 스프링 기반 예외로 예외 변환 @PersistenceContext : 엔티티 메니저( EntityManager ) 주입 @PersistenceUnit : 엔티티 메니터 팩토리..

웹계층 개발 - Home

1. Bootstrap 다운받기 https://getbootstrap.com Bootstrap The most popular HTML, CSS, and JS library in the world. getbootstrap.com 파일 다운로드해서, 프로젝트의 resources> static 폴더 밑에 복사 붙여넣기 해주기 복사붙이기 하면 바로 적용안되는데, rebuild 하거나 동기화시켜주고 다시 서버 동작시키면 된다. ( + 부트스크랩 버전이 안맞아서 잘 실행이 안됐는데, 질문을 보니 나같은 사람이 많아서 어떤 분이 해결방법 알려주심.) 오.. Bootstrap 다운받지 않고, CDN 이용해서 하는 방법이라고 합니다 :0 header.html 에 아래 소스 추가해주면 실행되더라구요 👍🏻 ( 똑똑이들 많다..

주문 도메인 개발

1. 주문, 주문상품 엔티티 개발 : Order / OrderItem 1) Order 클래스에 추가하기 1. 생성메서드 : createOrder ( Member, Delivery, OrderItem...) 2. 주문취소메서드 : cancel() 이미 배송완료된 상태이면, 취소불가 OrderStatus 취소로 변경 OrderItem에서 cancel호출 : 재고수량 원복하는 함수 3. 조회로직 추가 : getTotalPrice() 아이템 가격 * 아이템 갯수 반환 2) OrderItem 클래스에 추가하기 1. 생성메서드 : createOrderItem ( Item, orderPrice, count) 생성 시, 재고에서 주문수량만큼 차감하기 : item.removeStock 2. 비즈니스 로직 : cancel..

회원 도메인 개발

1. 회원 Repository 개발 - repository > MemberRepository.class 생성 - JPA를 사용하기 위한 EntityManager - save() - findOne(Long id) - findAll() - findByName(String name) 2. 회원 서비스 개발 - service > MemberService.class 생성 @Autowired MemberRepository 변수에 @Autowired를 지정하게 되면, 테스트코드 작성할때 수정이 어려움. -> 생성자에 Autowired 에노테이션 쓰면 편함 -> Lombok 의 @RequiredArgsConstuctor 사용하면 (final이 붙은) memberRepository에 해당하는 생성자만 만들고, 생성자도 ..

애플리케이션 아키텍처

애플리케이션 아키텍처 - Controller - Service - Repository - Domain 계층형 구조 사용 controller, web : 웹 계층 service : 비즈니스 로직, 트랜잭션 처리 repository: JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain : 엔티티가 모여 있는 계층, 모든 계층에서 사용 패키지 구조 jpabook.jpashop domain exception repository service web * 개발순서: 1. 도메인 -> 서비스, 리포지토리를 개발 하고 2. 테이스 케이스 작성해서 검증 3. 마지막에 컨트롤러 통해서 웹 계층 적용 도메인-> 서비스,리포지토리 -> 테스트케이스 -> 컨트롤러 -> 웹 계층

2.요구사항 분석 설계

1. 도메인 모델과 테이블 설계 회원 엔티티 분석 회원 테이블 분석 * 연관관계의 매핑 분석 -> 참고: 외래 키가 있는 곳을 연관관계의 주인으로 정해라. 회원과 주문 : 일대다, 다대일의 양방향 관계 외래키가 있는 주문 을 연관관계의 주인으로 하는 것이 좋다. 그러므로 Order.member 를 ORDERS.MEMBER_ID 외래키와 매핑한다. 주문상품과 주문 : 다대일 양방향 관계다. 외래 키가 주문상품에 있으므로 주문상품이 연관관계의 주인이다. 그러므로 OrderItem.order를 ORDER_ITEM.ORDER_ID 외래키와 매핑한다. 주문상품과 상품: 다대일 양방향 관계다. OrderItem.item 을 ORDERITEM.ITEM_ID 외래 키와 매핑한다. 주문과 배송 : 일대일 양방향 관계다...

1. 프로젝트 환경설정

프로젝트 생성 1. spring 사이트를 들어가서 아래와 같이 Dependencies를 설정한다. https://start.spring.io Dependencies에서 추가해줘야 하는 것들 - Spring Web Services - Thymeleaf - JPA - H2 * Lombok 추가하는 법 ( getter 와 setter을 자동으로 만들어줘서 매우 편리 ) 1. References > Plugins 에서 Lombok 을 추가해주고, 2. enable annotiation processing을 체크해준다. 라이브러리 살펴보기 spring-boot-starter-web spring-boot-starter-tomcat: 톰캣 (웹서버) spring-webmvc: 스프링 웹 MVC spring-boot-..