엔티티를 만들기 위해 테이블에 어떤 데이터가 저장될지 설계해야함
그전에 엔티티 매핑 관련 어노테이션을 알아보자
DDL이란?
테이블, 스키마, 인덱스, 뷰, 도메인을 정의, 변경, 제거할 때 사용하는 용어.
( CREATE, DROP 등이 이에 해당 )
생성 전략 | 내용 |
---|---|
GenerationType.AUTO (default) | JPA 구현체가 자동으로 생성 전략 결정 |
GenerationType.IDENTITY | 기본키 생성을 DB에 위임 (MySQL은 AUTO_INCREMENT로 기본키 생성) |
GenerationType.SEQUENCE | DB 시퀀스 오브젝트를 이용해 기본키 생성. @SqeuenceGenerator로 시퀀스 등록 필요 |
GenerationType.TABLE | 키 생성요 테이블 사용. @TableGenerator 필요 |
기본키와 DB 시퀀스 오브젝트의 의미
기본키 : DB에서 조회시 구분할 수 있는 유일한 기준
시퀀스 : 순차적으로 증가하는 값을 반환해주는 DB 객체
@Entity
@Table(name="item")
@Getter
@Setter
@ToString
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 // BLOB, CLOB 타입 매핑
@Column(nullable = false)
private String itemDetail; // 상품 상세 설명
@Enumerated(EnumType.STRING) // enum 타입 매핑
private ItemSellStatus itemSellStatus; // 상품 판매 상태 (enum 타입 클래스)
private LocalDateTime regTime; // 등록 시간
private LocalDateTime updateTime; // 수정 시간
}