이 내용은 스프링 부트 쇼핑몰 프로젝트 with JPA 책을 학습한 내용입니다.
1. 상품 판매 상태 enum 설계
- enum 클래스에 대한 개념
- kr.spring.item.constant.item.java 생성
- 상품의 현재 판매 상태 (판매, 품절)를 나타내는 상수값 (SELL, SOLD_OUT)
package kr.spring.item.constant;
// 상품의 현재 판매 상태를 나타내는 상수값
public enum ItemSellStatus {
SELL, SOLD_OUT
}
2. 상품 클래스 생성
- kr.spring.item.entity.java 생성
- 상품 판매 상태의 값은 ItemSellStatus 열거형의 값을 가짐
package kr.spring.item.entity;
// 아이템 엔티티
import jakarta.persistence.*;
import kr.spring.exception.OutOfStockException;
import kr.spring.item.constant.ItemSellStatus;
import kr.spring.item.dto.ItemFormDto;
import kr.spring.utils.entity.BaseEntity;
import lombok.*;
@Entity
@Table(name = "my_item") // 테이블 명칭 지정
@Getter
@Setter // 필수 아님
@ToString // 문자열 자동 생성
@NoArgsConstructor // 빈생성자 생성
@AllArgsConstructor //모든 entity에 대해서 생성자를 만든다.
public class Item {
@Id //기본키 설정
@GeneratedValue(strategy = GenerationType.IDENTITY) //mysql의 경우 identity를 사용.
@Column(name = "item_id") //name 속성은 column의 이름을 변경할 수 있다.
private Long id; // 상품 코드
// null을 허용하지 않음.
@Column(nullable = false, length = 50)
private String itemNm; // 상품 이름
@Column(nullable = false)
private int price; // 상품 가격
@Column(nullable = false, name="number")
private int stockNumber; // 재고 수량
// 열거형은 기본적으로 숫자로 다루는 것이 원칙. 해당 어노테이션은 열거형을 나타내는 어노테이션
// ORDINAL = 숫자로 다룬다. STRING = 문자로 다룬다.
@Enumerated(EnumType.STRING)
private ItemSellStatus itemSellStatus;
@Lob // 큰 데이터를 저장하는데 사용하는 데이터형(동영상, 이미지 등)
@Column(nullable = false)
private String itemDetail; // 상품 상세 설명
private LocalDateTime regTime; // 등록 시간
private LocalDateTime updateTime; // 수정 시간
}
3. 상품 테이블 생성
- Web Application 실행 시 @Entity 지정된 클래스를 기반으로 테이블 매핑
- spring.jpa.hibernate.ddl-auto=create 설정으로 인해서 테이블 drop 후 create
- spring.jpa.hibernate.ddl-auto=update 설정인 경우엔 테이블 update
MySQL-WorkBench or DBeaver 에서 초기에 환경설정한 데이터베이스명으로 생성된 테이블 확인
'Web & Android > 스프링 부트 쇼핑몰 프로젝트 with JPA' 카테고리의 다른 글
[스프링 부트 쇼핑몰 프로젝트 with JPA] 3. 로그인/로그아웃 (0) | 2023.10.15 |
---|---|
[스프링 부트 쇼핑몰 프로젝트 with JPA] 2-3. 회원가입 검증 (0) | 2023.10.15 |
[스프링 부트 쇼핑몰 프로젝트 with JPA] 2-2. 회원가입 페이지 (0) | 2023.10.15 |
[스프링 부트 쇼핑몰 프로젝트 with JPA] 2-1. 회원가입 로직 (0) | 2023.10.15 |
[스프링 부트 쇼핑몰 프로젝트 with JPA] 1-2. 상품 Repository 설계 (0) | 2023.10.15 |