요구사항

Untitled

코드 작성

Product 엔티티

@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;

}
  1. @NoArgsConstructor(access = AccessLevel.PROTECTED)

    자세히

  2. productNumber

  3. type

  4. sellingStatus

BaseEntity

보통 엔티티 같은 경우는 BaseEntity 를 상속받게 해서 엔티티가 생성된 시간과 변경된 시간을 추적합니다. 이렇게 트래킹 하는 것을 JPA에서 제공해줍니다. (Jpa Auditing 이라고 합니다.)

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {

    @CreatedDate
    private LocalDateTime createdDateTime;

    @LastModifiedDate
    private LocalDateTime modifiedDateTime;
}
  1. BaseEntity 자체로는 인스턴스로 만들 필요가 없기 때문에 추상클래스로 만들겠습니다.