@MappedSuperclass, @EnableJpaAuditing

이 어노테이션들은 Spring Data JPA에서 공통 엔티티 속성(예: 생성일, 수정일 등)을 자동으로 관리하기 위해 사용됩니다. 각각의 의미는 다음과 같습니다:


🔹 @MappedSuperclass

  • 이 클래스를 공통 부모 엔티티로써 JPA가 인식하게 해줍니다.

  • 하위 클래스에 매핑 정보(필드들: createdAt, updatedAt 등)를 상속하지만, 이 클래스 자체는 테이블로 생성되지 않습니다.

  • 즉, @Entity는 붙이지 않음.

@MappedSuperclass
public abstract class BaseEntity {
    @CreatedDate
    private LocalDateTime createdAt;

    @LastModifiedDate
    private LocalDateTime updatedAt;
}

🔹 @EntityListeners(AuditingEntityListener.class)

  • 이 어노테이션은 JPA의 이벤트를 감지해서 자동으로 필드를 채우는 기능을 추가합니다.

  • 예: 엔티티가 저장되거나 수정될 때 @CreatedDate, @LastModifiedDate 필드를 자동으로 채워줍니다.

  • @EnableJpaAuditing 설정과 함께 사용해야 활성화됩니다.

@EnableJpaAuditing
@SpringBootApplication
public class CafekioskApplication {

    public static void main(String[] args) {
        SpringApplication.run(CafekioskApplication.class, args);
    }

}

✅ 요약

어노테이션
역할

@MappedSuperclass

자식 엔티티에 공통 필드 상속 (테이블 생성 안됨)

@EntityListeners(AuditingEntityListener.class)

JPA 이벤트 발생 시 자동으로 날짜 필드 채움


이 조합은 대부분의 JPA 프로젝트에서 공통 엔티티를 구성할 때 반복 없이 생성일/수정일 처리를 위해 사용됩니다.

Last updated