상품 엔티티 설계하기

JinKyung·2023년 3월 11일
0

SpringBoot 쇼핑몰

목록 보기
2/12

상품 엔티티를 만드려면

  • 상품 테이블에 어떤 데이터가 저장되어야 할지 설계해야함

com.shop 아래에 entity 패키지 생성. entity 모아둘 예정

아래와 같이 현재 상품이 판매 중인지 품절 상태인지를 나타내는 enum 타입의 클래스 ItemSellStatus와 상품 클래스인 Item 클래스를 생성하자.

enum 클래스는 연관된 상수들을 모아둘 수 있으며, enum에 정의한 타입만 값을 갖도록 컴파일 시 체크가 가능하다!



com.shop.constant.ItemSellStatus.java

package com.shop.constant;

public enum ItemSellStatus {
    SELL, SOLD_OUT
}

com.shop.entity.Item.java

package com.shop.entity;

import com.shop.constant.ItemSellStatus;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.time.LocalDateTime;

@Getter
@Setter
@ToString
public class Item {
    private Long id; // 상품 코드
    private String ItemNm; // 상품명
    private int price; // 가격
    private int stockNumber; // 재고 수량
    private String itemDetail; // 상품 상세 설명
    private ItemSellStatus itemSellStatus; // 상품 판매 상태
    private LocalDateTime regTime; // 등록 시간
    private LocalDateTime updateTime; // 수정 시간
}
어노테이션내용
@Entity클래스를 엔티티로 선언
@Table엔티티와 매핑할 테이블 지정
@Id테이블의 pk에 사용할 속성 지정
@GeneratedValue키 값을 생성하는 전략(방법) 지정
@Column필드와 컬럼 매핑
@Enumeratedenum 타입 매핑



package com.shop.entity;

import com.shop.constant.ItemSellStatus;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
@Table(name="item")
@Getter
@Setter
@ToString
public class Item {
    @Id
    @Column(name="item_id") // 객체명과 DB명을 다르게 하고 싶을 때 name 속성 사용
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id; // 상품 코드
    @Column(nullable = false, length = 50)
    private String ItemNm; // 상품명
    @Column(name = "price", nullable = false)
    private int price; // 가격
    @Column(nullable = false)
    private int stockNumber;// 재고 수량
    @Lob
    @Column(nullable = false)
    private String itemDetail; // 상품 상세 설명
    @Enumerated(EnumType.STRING)
    private ItemSellStatus itemSellStatus; // 상품 판매 상태
    private LocalDateTime regTime; // 등록 시간
    private LocalDateTime updateTime; // 수정 시간
}

item 테이블 생성 완료!

0개의 댓글