YS's develop story

Jpa @CreatedDate, @LastModifiedDate 어노테이션이 적용 본문

Spring

Jpa @CreatedDate, @LastModifiedDate 어노테이션이 적용

Yusang 2023. 11. 22. 22:36

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

    @CreatedDate
    protected LocalDateTime createdAt;

    @Column(insertable = false)
    @LastModifiedDate
    protected LocalDateTime updatedAt;
    
    .....
    ....

위와 같이 createdAt 칼럼은 테이블에 튜플이 생성될 때 최초생성된 시간을 기준으로 값이 넣어지도록

@CreatedDate 어노테이션이 createdAt 필드에 적용되어 있습니다.

의도대로라면 이제 이 엔티티를 저장할 때마다 createdAt 필드는 현재 시간으로 자동으로 설정되어야 합니다.

 

 

하지만 이를 사용하려면 Spring Data JPA의 Auditing 기능을 활성화해야 합니다.

그렇기에 단순이 어노테이션만 추가해서는 기능이 정상 동작하지 않게 됩니다.

이를 위해서는 다음과 같이 설정 파일에 @EnableJpaAuditing 어노테이션을 추가해야 합니다:

@SpringBootApplication
@EnableJpaAuditing
public class YanoljaApplication {

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

 

 

위와 같이 @CreatedDate 어노테이션을 적용한 필드는 값이 추가될 때마다 자동적으로 생성된 시간이 기록되게 됩니다.

실제 db를 확인하면 자동적으로 created_at이 기록되는 것을 확인할 수 있습니다.

 

@Column(insertable = false)
@LastModifiedDate
protected LocalDateTime updatedAt;

@LastModifiedDate 어노테이션은 마지막으로 수정된 시간을 자동으로 기록하게 됩니다.

 

 

정리하자면 @EnableJpaAuditing 어노테이션은 Spring Boot 애플리케이션의 메인 클래스에 추가됩니다.

이 어노테이션을 사용하면 JPA 엔티티에서 @CreatedDate@LastModifiedDate 어노테이션을

사용하여 필드를 자동으로 업데이트할 수 있습니다.

Comments