1. 소개
Spring Data JPA를 사용하면 엔티티의 생성 및 수정 시간을 자동으로 관리할 수 있다. 이를 위해 @EnableJpaAuditing, @EntityListeners, @CreatedDate, @LastModifiedDate 등의 어노테이션을 활용 할 수 있다.
이번 글에서는 해당 어노테이션들의 역할과 사용법을 정리해보겠다.
2. 코드 예제
아래는 Spring Data JPA의 Auditing 기능을 사용하는 예제 코드이다.
@EntityListeners(EntityListeners.class)
@MappedSuperclass
@Getter
public class TimeBaseEntity {
@CreatedDate
@Column(updatable = false)
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
}
@EnableJpaAuditing
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class);
}
}
3. 어노테이션 설명
① @EnableJpaAuditing
- Spring Boot 애플리케이션에서 JPA Auditing을 활성화하는 어노테이션
- @CreatedDate, @LastModifiedDate 등의 기능이 정상적으로 동작하려면 반드시 필요하다.
- @SpringBootApplication과 함께 설정하는 것이 일반적이다.
② @MappedSuperclass
- 해당 클래스를 다른 엔티티에서 상속받을 때, 부모 클래스의 필드를 컬럼으로 사용할 수 있도록 해주는 어노테이션이다.
- 직접 테이블이 생성되지 않으며, 이를 상속받은 엔티티가 createdAt, updatedAt을 가지게 된다.
③ @EntityListeners(AuditingEntityListener.class)
- 엔티티가 저장되거나 업데이트될 때 자동으로 감지하여 @CreatedDate, @LastModifiedDate 필드를 채울 수 있도록 돕는 리스너를 등록한다.
- JPA에서 엔티티의 라이프사이클 이벤트를 감지하는 역할을 한다.
④ @CreatedDate
- 엔티티가 처음 생성될 때 해당 필드에 자동으로 현재 시간이 저장된다.
- @Column(updatable = false)와 함께 사용하면, 이후 업데이트 시 값이 변경되지 않도록 방지할 수 있다.
⑤ @LastModifiedDate
- 엔티티가 수정될 때 해당 필드가 자동으로 갱신된다.
- @CreatedDate와 달리, 엔티티가 수정될 때마다 값이 변경된다.
'Spring' 카테고리의 다른 글
[Spring] Spring JPA 복합 키 매핑 - @Embeddable vs @IdClass (1) | 2025.02.24 |
---|---|
[Spring] RowMapper란 ? (0) | 2024.05.12 |
[Spring] Entity 에 쓰이는 Annotation (0) | 2024.03.10 |
[Spring] Nginx와 Spring Server를 활용한 무중단 배포 (0) | 2024.01.29 |
[Spring] Nginx에 http 대신 https 적용하기 (0) | 2024.01.29 |