개발일지/SPRING

[Spring Data JPA] @CreatedDate, @LastModifiedDate가 null이 들어가는 이유

양쏘쏘 2024. 6. 20. 15:23
728x90
반응형

Spring Data JPA의 Auditing 기능은 엔터티가 생성되거나 수정될 때 자동으로 특정 필드를 갱신해주는 기능입니다.

 

 

1. @EnableJpaAuditing

Spring Boot 애플리케이션 클래스나 설정 클래스에 추가하여 Auditing 기능을 활성화합니다.

1) 애플리케이션에 추가하는 경우

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@SpringBootApplication
@EnableJpaAuditing
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

 

2) 설정 클래스에 추가하는 경우

import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@Configuration
@EnableJpaAuditing
public class JpaAuditingConfiguration {
    // 필요에 따라 추가 설정 가능
}
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = {"com.example.package"}) // 패키지 경로를 적절히 변경
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

2. @EntityListeners(AuditingEntityListener.class)

엔티티 클래스에 추가하여 Auditing 기능이 엔티티에 적용되도록 합니다.

@CreatedDate : 엔티티가 처음 생성될 때의 날짜와 시간을 자동으로 설정

@LastModifiedDate :엔티티가 수정될 때의 날짜와 시간을 자동으로 설정

생성일자는 수정이 필요없기 때문에 updatable을 false로 설정해뒀습니다. 

 

import org.springframework.data.annotation.CreatedDate;
import javax.persistence.Column;
import java.time.LocalDateTime;

@Entity
@EntityListeners(AuditingEntityListener.class)
public class MyEntity {

    @CreatedDate
    @Column(updatable = false)
    private LocalDateTime createdDate;
    
    @LastModifiedDate
    private LocalDateTime lastModifiedDate;

    // 기타 필드 및 메소드
}

 

728x90