728x90
1. 상품 판매상태를 enum 클래스로 정의
- enum 클래스에 대한 설명
- hello.example.constant.ItemSellStatus.java 생성
- 상품의 현재 판매상태(판매, 품절)를 나타 내는 상수(SELL, SOLD_OUT)
2. 상품 클래스 생성
- hello.example.domain.Item.java 생성
- 상품의 현재 판매상태는 enum타입의 ItemSellStatus변수를 갖는다.
- 상품 조회를 위한 @Getter선언과 Item클래스를 문자열로 출력해주는 @ToString선언
- 정적 팩토리 메서드를 사용할 예정이기 때문에 @Setter는 사용하지 않았다.
3. 상품 클래스 생성(+어노테이션)
- hello.example.domain.Item.java 생성
- Table Schema을 위한 어노테이션 설정
- @NoArgsConstructor(access = AccessLevel.PROTECTED) = JPA는 스펙상 기본 생성자를 가져야 한다.
- 하지만 기본 생성자를 PUBLIC으로 하면 무분별하게 생성할 수 있기 때문에 PROTECTED로 설정
4. 애노테이션 설명
어노테이션 | 설명 |
@Entity | 클래스를 엔티티로 선언 |
@Table | 엔티티와 매핑할 테이블을 지정 |
@Id | 테이블의 기본키에 사용할 속성을 지정 |
@GeneratedValue | 키값을 생성하는 전략 명시 |
@Column | 필드와 컬럼 매핑 |
@Lob | BLOB, CLOB 타입 매핑 |
@Enumerated | enum 타입 매핑 |
4.1 애노테이션 부가설명
4.1.1 @GeneratedValue(strategy = " ")
strategy 종류 | |
GenerationType.IDENTITY | 기본키 생성을 DB에 위임 ID값을 null로 두면 DB가 AUTO_INCREMENT 해준다. |
GenerationType.SEQUENCE | DB의 Sequence Object를 이용한 기본키 생성 @SequanceGenerator를 사용하여 시퀀스 등록 필요 |
GenerationType.TABLE | 키 생성용 전용 테이블을 이용, 데이터베이스 시퀀스를 흉내내는 전략 @TableGenerator 필요 |
GenerationType.AUTO | DB의 Id값 생성 전략의 Default 방언에 따라 위의 세 가지 전략을 자동으로 지정한다. |
4.1.2 @Lob (데이터베이스의 BLOB, CLOB타입과 매핑)
- 지정할 수 있는 속성이 없다.
LOB(Large Object) | |
CLOB(Character Large Object) | 문자 대형 객체 문자 기반 데이터 보관용 |
BLOB(Binary Large Object) | 이진 대형 객체, 이미지, 동영상, MP3 등.. 비 전통적인 데이터 보관용 |
728x90