상태를 나타내는 enum타입의 클래스 생성
public enum ItemStatus {
SELL, SOLD_OUT
}
어노테이션 | 설명 |
---|---|
@Entity | 클래스를 엔티티로 선언 |
@Table | 엔티티와 매핑할 테이블을 지정 |
@Id | 테이블의 기본키에 사용할 속성을 지정 |
@GeneratedValue | 키 값을 생성하는 전략 명시 |
@Column | 필드와 컬럼 매핑 |
@GeneratedValue(strategy = GenerationType.AUTO)
생성 전략 | 설명 |
---|---|
GenerationType.AUTO(default) | JPA 구현체가 자동으로 생성 전략 결정 |
GenerationType.IDENTITY | 기본키 생성을 데이터베이스에 위임 |
GenerationType.SEQUENCE | 데이터베이스 시퀀스 오브젝트를 이용한 기본키 생성 |
GenerationTYPE.TABLE | 키 생성용 테이블 사용, @TableGenerator 필요 |
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import com.shopping.study.constant.ItemStatus;
import lombok.Data;
@Data
@Entity
@Table(name="item")
public class Item {
@Id
@Column(name="item_id")
@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 ItemStatus itemStatus; //상품판매상태
private LocalDateTime regTime; //등록시간
private LocalDateTime updateTime; //수정시간
}
@GeneratedValue(strategy = GenerationType.AUTO)
MySQL에서 AUTO_INCREMENT를 이용해 데이터베이스에 INSERT 쿼리문을 보내면 자동으로 기본키 값을 증가시킬 수 있다.
데이터베이스에 의존하지 않고 기본키를 할당하는 방법으로 데이터베이스가 변경되더라도 코드를 수정할 필요 없다.
nullable은 @Column의 속성 중 하나로, 기본값은 true이다.
값을 false로 설정해 주면, 해당 필드는 DDL 생성 시 not null이라는 조건이 붙은 채로 생성된다.
Entity 생성하고, 실행해보면 item 테이블이 생성되는 쿼리문을 콘솔창에 보인다.
데이터베이스 들어가보면 테이블이 만들어진걸 볼 수 있다.!