멘토님과 나누고 싶은 이야기 / 피드백 요청 내용

현재 백엔드 진행 상황

질문 사항

이유상

member entity에서 추후 일반적인 member가 아닌 운영자등 추가적인 member구현을 위하여 member entity에 member가 기본적으로 가질 수 있는 값들을 @Embedded @Embeddable 을 활용하여 구현하였고 모든 클래스가 가지고 있어야 하는(대부분의 모든 클래스) createdAt, updateAt 값들은 superclass로 만들어 상속을 받아 사용하도록 했는데 **이렇게 차이를 둬서 개발하는 방법이 맞는지 실무에서 이렇게 활용하는지 궁금합니다.

모든 클래스에서 공통적으로 사용되어야 하는것들은 superclass로 구현하고 몇개의 클래스에서 공통적으로 사용되는 항목들은** @Embedded @Embeddable 로 구현 한 방식이 맞는지 궁금합니다.

코드예시

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class Member extends BaseTimeEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long memberId;

    @Embedded
    protected MemberBase member_base;

    private String provider;

    private String profile_image;

    private Integer total_point;

    private Double member_rating;
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Embeddable
public class MemberBase {
    private String email;
    private String nickname;
    private String password;
    private String authority;
}

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

    @CreatedDate
    protected LocalDateTime createdAt;

    @LastModifiedDate
    protected LocalDateTime updatedAt;
}

이주연