JPA Auditing 적용 이유
- 데이터의 생성, 수정되는 시간은 글을 작성했을 때, 댓글을 작성했을 때 등 자주 활용되는데 각각 Entity의 생성, 수정 시간을 매번 작성하는 건 효율적이지 않음
- Spring Data JPA에선 시간에 대해 자동으로 값을 넣어주는 기능인 JPA Auditing을 제공함
JAP Auditing을 사용하는데 알아둬야 하는 annotation
- @ MappedSuperClass
- JPA엔티티클래스들이 해당 추상 클래스를 상속할 경우 추상 클래스를 선언한 멤버 변수를 컬럼으로 인식시켜주는 annotation
- EntityListener(AuditingEntityListener.class)
- 해당 클래스에 Auditing 기능을 수행할 수 있도록 기능을 포함시켜줌
- @CreatedDate
- Entity 객체가 생성되어 저장될 때 시간이 자동으로 저장됨
- @Column(updatable = false)
- 수정사항 반영 안함
- 작성일은 최초 시간 이후로 글이 수정이 되더라도 수정되면 안되므로 이 옵션을 추가해줘야 함
- @LastModifiedDate
- 조회한 entity값이 변경이 되면 변경될 때 마다 시간이 새롭게 저장됨
- @Temporal
- 자바의 Date 타입들을 mapping할 때 사용
- Date : 2024-01-22
- Time : 20:21:14
- TimeStamp : 2024-01-22 20:21:14.99999
- @EnableJpaAuditing
- main 클래스에 붙여줘야 상속을 받을 수 있음
- 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;
}
@EnableJpaAuditing
@SpringBootApplication
public class MemoApplication {
public static void main(String[] args) {
SpringApplication.run(MemoApplication.class, args);
}
}