어떤 정보를 관리할 때 데이터의 생성된 날짜와 수정된 날짜를 저장해야되는 경우도 있다. 일일이 저장할 수도 있겠지만, 이 어노테이션을 이용하면 별도의 코드 없이도 자동으로 저장하게 할 수 있다. @CreatedDate는 데이터의 생성일을, @LastModifiedDate는 데이터의 마지막 수정일을 저장한다. 이 어노테이션들은 다음과 같이 사용할 수 있다.
import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners;
import java.time.LocalDateTime;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@Entity
@EntityListeners(AuditingEntityListener.class)
public class 예시 {
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime modifiedAt;
}
사용하려는 엔티티 클래스에 @EntityListeners(AuditingEntiryListener.class)를, 생성일과 수정일을 자동으로 저장하고자 하는 컬럼에 어노테이션을 붙이면 된다(이름은 생성일과 수정일이지만 시간까지 저장된다). 또 다음과 같은 별도의 설정이 필요하다.
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.data.jpa.repository.config.EnableJpaAuditing;
@EnableJpaAuditing
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(LibraryApplication.class, args);
}
}
둘 다 해야하는 건 아니고, 둘 중 하나 편한 것을 고르면 된다. 만약 이 설정을 빼놓으면 앞선 설정을 인식하지 못하여 값이 저장되지 않는다. 값이 null에서 갱신되지 않는 이유는 이 부분을 빠뜨려서 생긴 버그일 확률이 높다.
'DB > JDBC & JPA' 카테고리의 다른 글
[JPA] Soft Delete와 @SQLDelete (0) | 2024.01.31 |
---|