본문 바로가기

개발일지

20231206 - @CreatedDate, @LastModifiedDate

프로젝트에서 게시물 CRUD 기능 구현을 하면서 게시글의 작성 시간과 수정 시간을 DB에 저장하기 위해 Timestamp 클래스를 따로 만들어서 필요한 Entity에서 사용하기로 했다.

 

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

    @CreatedDate
    @Column(updatable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private LocalDateTime createdAt;

    @LastModifiedDate
    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private LocalDateTime modifiedAt;

}

 

Timestamp 클래스는 다음과 같다

@MappedSuperclass 어노테이션을 통해 이 클래스를 상속받는 자식클래스에 매핑정보를 제공한다.

 

@EntityListeners 어노테이션을 통해서 JPA Entity에서 이벤트가 발생할 때마다 AuditingEntityListener.class 가 callback 클래스로 지정되어 특정 로직을 수행하게 된다.

 

@CreatedDate는 DB에 저장될 때의 시간을, @ModifiedDate는 수정됐을 때의 시간을 나타낸다.

 

@Temporal(TemporalType.TIMESTAMP)를 통해 DB 타입에 맞게 매핑해준다.

 

여기까지 설정을 하고 빌드를 하면 계속 null값만 들어온다. 마지막으로 Application 클래스에 @EnableJpaAuditing 어노테이션을 추가해줘야 한다.

 

 

'개발일지' 카테고리의 다른 글

20231211- QueryDSL사용해보기  (0) 2023.12.11
20231207 - Spring으로 MultipartFile 받기  (2) 2023.12.07
20231205 - 프로그래머스/42748  (1) 2023.12.05
20231204 - 프로그래머스/12915  (2) 2023.12.04
20231201 - Dto 테스트  (0) 2023.12.01