일반적인 쇼핑몰에서 makerShop은 사입처를 의미
'ex)동대문 시장(옷을 만들거나 때오는 곳)'
품절 상품에 대해선 품절 상품이라고 알려줘야한다.
팔 수 없는 것과 품절된 상품은 다르다.
재고수 0개여도 판매는 가능하다. (사입처에 재 주문)
상품과 상품 옵션은 다르다. 옵션별 재고수가 파악되야 한다.
@OneToMany, @ManyToMany 의 fetch 타입의 기본값은 FetchType.LAZY 입니다.
그러므로 지연로딩을 사용할때 추가로 설정해줄 필요가 없습니다.
@ManyToOne, @OneToOne 의 fetch 타입의 기본값은 FetchType.EAGER 입니다.
즉시로딩을 사용할때 LAZY 타입으로 변경해주어야 합니다.
@MappedSuperclass:
이 주석은 JPA(Java Persistence API)에서 주석이 달린 클래스가 이 클래스에서 상속받는 엔터티에 매핑이 적용되어야 하는 슈퍼클래스임을 나타내기 위해 사용됩니다.
슈퍼클래스에서 공통 필드와 메소드를 정의하고 이를 여러 엔터티 클래스에서 상속받을 수 있습니다.
그러나 매핑된 슈퍼클래스에서 상속된 엔터티에는 데이터베이스에 해당 테이블이 없습니다. 대신 해당 매핑이 슈퍼클래스의 매핑과 병합됩니다.
@SuperBuilder:
이 주석은 Java의 상용구 코드를 줄이기 위한 주석 세트를 제공하는 Lombok 라이브러리의 일부입니다.
@SuperBuilder는 슈퍼클래스에서 상속된 모든 필드를 포함하여 클래스에 대한 빌더 패턴을 생성하는 데 사용됩니다.
해당 필드에 대한 값 설정을 포함하여 주석이 달린 클래스의 인스턴스를 쉽게 생성할 수 있는 빌더 클래스를 생성합니다.
@EntityListeners(AuditingEntityListener.class):
이 주석은 JPA에서 엔터티 클래스에 대해 호출되어야 하는 콜백 리스너 클래스를 지정하는 데 사용됩니다.
이 특정한 경우 @EntityListeners(AuditingEntityListener.class)는 Spring Data JPA에서 제공하는 감사 기능을 사용하여 엔터티 클래스가 감사됨을 나타냅니다.
감사를 사용하면 애플리케이션 코드에서 명시적으로 설정하지 않고도 엔터티의 특정 필드(예: 생성 날짜, 마지막 수정 날짜, CreateBy, ModifiedBy 등)를 자동으로 채울 수 있습니다. AuditingEntityListener는 일반적으로 감사를 처리하기 위해 Spring Data JPA에서 제공됩니다.
보통은 총 수량도 같이 넘겨준다.