- 데이터의 생성(created_at), 수정(modified_at) 시간은 포스팅, 게시글, 댓글 등 다양한 데이터에 매우 자주 활용되는데, 각각의 Entity의 생성 수정 시간을 매번 작성하는건 너무 비효율적이다.
- Spring Data JPA에서는 시간에 대해서 자동으로 값을 넣어주는 기능인 JPA Auditing을 제공한다.
@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;
}
updatable = false 옵션을 추가한다.@Entity
@Table(name = "posts")
@Getter
@Setter
@NoArgsConstructor
public class Post extends Timestamped{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 500)
private String title;
@Column(nullable = false, length = 5000)
private String content;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
Timestamped 추상 클래스를 상속받아서 테이블을 생성하면

다음과 같이 created_at, modified_at컬럼이 추가되는 것을 확인할 수 있다.
단 JPA Auditing기능을 사용하기 위해서는 @SpringBootApplication 이 있는 class에 기능을 사용하겠다는 정보를 전달하기 위해 @EnableJpaAuditing 추가해야한다.
