Spring

    MVC 계층 개발 3. 주문, 주문 취소, redirect 주의, Transaction 주의

    OrderController @Controller @RequiredArgsConstructor public class OrderController { private final ItemService itemService; private final MemberService memberService; private final OrderService orderService; @GetMapping("/order") public String itemOrderForm(Model model) { List members = memberService.findMembers(); List items = itemService.findItems(); model.addAttribute("members", members); mode..

    MVC 계층 개발 2. 상품 개발, 변경 감지와 병합

    1. 상품 등록, 상품 목록 조회 BookForm @Getter @Setter public class BookForm { private Long id; private String name; private int price; private int stockQuantity; private String author; private String isbn; } ItemController @Controller @RequiredArgsConstructor public class ItemController { private final ItemService itemService; // 상품 등록 @GetMapping("/items/new") public String createForm(Model model) { mode..

    MVC 계층 개발 1. 홈화면, 회원등록 및 목록 조회 (Spring-boot-starter-validation 사용) (thymeleaf 배우기) (BindingResult, @Valid)

    1. 홈회면과 레이아웃 설정 - 화면 레이아웃 구성을 더 쉽게 하도록 도와주는 프레임워크인 bootstrap을 설치해서 추가하자 -> https://getbootstrap.com/ 접속 ! 설치 ! -> resources/static 폴더에 다운받은 css, js 폴더 전체를 넣어주자 - 스프링 부트 타임리프 기본 설정(default) spring: thymeleaf: prefix: classpath:/templates/ suffix: .html 스프링 부트 타임리프 viewName 매핑 resources:templates/ +{ViewName}+ .html 반환한 문자(ex. home )과 스프링부트 설정 prefix , suffix 정보를 사용해서 렌더링할 뷰( html )를 찾는다. SpringBo..

    주문 도메인 개발

    주문, 주문상품 엔티티 개발 주문 엔티티 (Order) package jpabook.jpashop.domain; import lombok.Getter; import lombok.Setter; import org.aspectj.weaver.ast.Or; import javax.persistence.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity @Setter @Getter @Table(name = "orders") public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fe..

    상품 도메인 개발, @Transactional에 대한 궁금증 해소

    상품 도메인 개발 비즈니스 로직 추가 1. 재고 증가 2. 재고 감소 상품 엔티티 개발 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; @Getter @Setter @Entity @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "dtype") public abstract class Item ..

    회원 도메인 개발(레포지터리, 서비스, 테스트) && 의존주입 생략 과정, JUnit5를 이용한 테스트, 내부 DB로 전환

    소스 코드 Member package jpabook.jpashop.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; @OneToMany(mappedBy = "member") private List orders = new ArrayList(); private String name; @Embedded private Address a..

    도메인 분석 설계 (JPA를 활용해서 엔티티 클래스 개발)

    도메인 분석 설계 (0) 실제 화면 회원 기능 - 회원가입 - 회원목록 상품 기능 - 상품 등록 - 상품 목록 주문 기능 - 상품 주문 - 주문내역 (1) 실제 동작하는 화면을 먼저 확인 한 뒤에 기능 목록을 추출한다. 기능목록 회원 기능 - 회원 등록 - 회원 조회 상품 기능 - 상품 등록 - 삼품 수정 - 상품 조회 주문 기능 - 상품 주문 - 주문 내역 조회 - 주문 취소 기타 요구 사항 - 상품(Item)은 재고 관리가 필요하다. - 상품의 종류는 Book, Album, Movie 가 있다. - 상품을 카테고리로 구분할 수 있다. - 상품 주문시 배송 정보를 입력할 수 있다. (2) 도메인 모델과 테이블 설계 (출처: 실전! 스프링부트와 활용1 https://www.inflearn.com/cour..

    JPA와 DB 설정, 동작 확인

    JPA와 DB 설정, 동작 확인 H2 DB 설치 및 JPA DB 환경설정 (1) H2 설치 및 설정 -> http://h2database.com/html/main.html 에서 설치 -> 설치후 h2콘솔에서 JDBC URL에서 -> Generic H2 (Embedded)로 설정한 이름을 붙여 실행 ex) jdbc:h2:~/jpashop -> Generic H2 (Server)로 설정하고 나온대로 실행 ex) jdbc:h2:tcp://localhost/~/jpashop (2) JPA와 DB 환경설정 application.yml 만들기 yml은 YAML ain't Markup Language의 약자라고 하는데, 최근 스프링이나 쿠버 네티스의 '설정파일' 저장양식으로 많이 쓰인다고한다. resources의 경..