[03] 상품 엔티티 설계하기

Veloger·2022년 12월 11일
0

ShopWeb_Project

목록 보기
3/7

엔티티를 만들기 위해 테이블에 어떤 데이터가 저장될지 설계해야함
그전에 엔티티 매핑 관련 어노테이션을 알아보자

엔티티 매핑 관련 어노테이션

@Column 속성

DDL이란?

테이블, 스키마, 인덱스, 뷰, 도메인을 정의, 변경, 제거할 때 사용하는 용어.
( CREATE, DROP 등이 이에 해당 )

@GeneratedValue

  • Entity 클래스에는 기본키가 있어야 한다.
  • 기본적으로 @Id 를 통해 기본키로 사용할 칼럼 설정.
  • @GeneratedValue를 통해서도 기본키 생성 전략을 설정.
  • 총 4가지 방법이 존재
생성 전략내용
GenerationType.AUTO (default)JPA 구현체가 자동으로 생성 전략 결정
GenerationType.IDENTITY기본키 생성을 DB에 위임 (MySQL은 AUTO_INCREMENT로 기본키 생성)
GenerationType.SEQUENCEDB 시퀀스 오브젝트를 이용해 기본키 생성. @SqeuenceGenerator로 시퀀스 등록 필요
GenerationType.TABLE키 생성요 테이블 사용. @TableGenerator 필요

기본키와 DB 시퀀스 오브젝트의 의미

기본키 : DB에서 조회시 구분할 수 있는 유일한 기준
시퀀스 : 순차적으로 증가하는 값을 반환해주는 DB 객체

예시

-> com.shop.entity.item.java

@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; // 수정 시간
}

0개의 댓글

관련 채용 정보