프로젝트에서 게시물 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 |