상품 엔티티를 만드려면
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 | 필드와 컬럼 매핑 |
@Enumerated | enum 타입 매핑 |
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 테이블 생성 완료!