@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED) //...1
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String productNumber; //...2
@Enumerated(EnumType.STRING)
private ProductType type; //...3
@Enumerated(EnumType.STRING)
private ProductSellingStatus sellingstatus; //...4
private String name;
private int price;
}
@NoArgsConstructor(access = AccessLevel.PROTECTED)
→ 자세히
productNumber
type
상품 타입
enum 타입
@Getter
@RequiredArgsConstructor
public enum ProductType {
HANDMADE("제조 음료"),
BOTTLE("병 음료"),
BAKERY("베이커리");
private final String text; //...1
}
sellingStatus
판매 상태
enum 타입
@Getter
@RequiredArgsConstructor
public enum ProductSellingStatus {
SELLING("판매중"),
HOLD("판매보류"),
STOP_SELLING("판매중지");
private final String text; //...1
}
보통 엔티티 같은 경우는 BaseEntity 를 상속받게 해서 엔티티가 생성된 시간과 변경된 시간을 추적합니다. 이렇게 트래킹 하는 것을 JPA에서 제공해줍니다. (Jpa Auditing 이라고 합니다.)
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {
@CreatedDate
private LocalDateTime createdDateTime;
@LastModifiedDate
private LocalDateTime modifiedDateTime;
}