JPA/1편- 실전! 스프링 부트와 JPA 활용
(중요) 웹 계층 개발
홈 화면과 레이아웃 tymeleaf를 사용하였다. header,bodyHeader,footer를 thymeleaf의 replace기능을 이용하여 layout을 적용해줬다. bootstrap과 jumbotron-narrow.css를 사용한다(jumbotron-narrow.css는 제공하는 소스를 사용) ※ 참고 Hierarchical-style layouts > 예제에서는 뷰 템플릿을 최대한 간단하게 설명하려고, header , footer 같은 템플릿 파일을 반복해서 포함한다. 다음 링크의 Hierarchical-style layouts을 참고하면 이런 부분도 중복을 제거할 수 있다. https://www.thymeleaf.org/doc/articles/layouts.htm 홈 컨트롤러 등록 packag..
(중요) 주문 도메인 개발
구현 기능 1. 상품 주문 2. 주문 내역 조회 3. 주문 취소 주문, 주문상품 엔티티 개발 주문 엔티티 코드(생성메서드, 비즈니스 로직) @Entity @Table(name = "orders") @Getter @Setter public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List orderItems = new ArrayList..
상품 도메인 개발
상품 엔티티 개발(비즈니스 로직 추가) @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "dtype") @Getter @Setter public abstract class Item { @Id @GeneratedValue @Column(name = "item_id") private Long id; private String name; private int price; private int stockQuantity; @ManyToMany(mappedBy = "items") private List categories = new ArrayList(); // ==비즈니스 로직== // /** * sto..
회원 도메인 개발
회원 엔티티 코드 package jpabook.jpashop.domain; import java.util.ArrayList; import java.util.List; import javax.persistence.*; import lombok.Getter; import lombok.Setter; @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; @Embedded private Address address; @OneToMany(mappedBy = "member") private List orders = new ArrayLis..
애플리케이션 구현 준비
구현 요구사항 기능 목록 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다 예제를 단순화 하기 위해 다음 기능은 구현X 로그인과 권한 관리X 파라미터 검증과 예외 처리X 상품은 도서만 사용 카테고리는 사용X 배송 정보는 사용X 애플리케이션 아키텍처 계층형 구조 사용 controller, web: 웹 계층 service: 비즈니스 로직, 트랜잭션 처리 repository: JPA를 직접 사용하는 계층, 엔티티 매니저 사용 domain: 엔티티가 모여 있는 계층, 모든 계층..
도메인 분석 설계 - 엔티티 클래스 개발
엔티티 클래스 개발 위 회원 엔티티 관계도를 보고 VO 생성 코드를 만들어 본다. 회원(Member) 엔티티 package jpabook.jpashop.domain; 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; private String name; @Embedded private Address address; @OneToMany(mappedBy = "member") private List orders = new A..
도메인 분석 설계
요구사항 분석 기능 목록 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다 도메인 모델과 테이블 설계 회원, 주문, 상품의 관계 : 회원은 여러 상품을 주문할 수 있다. 그리고 한 번 주문할 때 여러 상품을 선택할 수 있으므로 주문과 상품은 다대다 관계다. 하지만 이런 다대다 관계는 관계형 데이터베이스는 물론이고 엔티티에서도 거의 사용하지 않는다. 따라서 그림처럼 주문상품이라는 엔티티를 추가해서 다대다 관계를 일대다, 다대일 관계로 풀어냈다. 상품 분류: 상품은 도서, ..