"스프링 부트와 AWS로 혼자 구현하는 웹 서비스"의 3장 '스프링 부트에서 JPA로 데이터베이스 다뤄보자'를 공부하던 중 맨 마지막 부분의 "JPA Auditing으로 생성시간/수정시간 자동화하기"는 잘 알아두는 것이 좋을 것 같아서 글을 작성하게 되었다.
엔티티에는 해당 데이터의 생성시간과 수정시간을 포함한다.
(언제 만들어졌는지, 언제 수정되었는지는 차후 유지보수에 있어 굉장히 중요한 정보이기 때문)
하지만 매번 DB에 삽입, 갱신 전 날짜 데이터를 등록/수정하는 코드가 들어가게 되면 귀찮고 지저분해지기 때문에 이 문제를 해결하고자 JPA Auditing 을 사용한다.
import lombok.Getter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.MappedSuperclass;
import javax.persistence.EntityListeners;
import java.time.LocalDateTime;
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
}
- @MappedSuperclass
- JPA Entity 클래스들이 BaseTimeEntity을 상속할 경우 필드들(createdDate, modifiedDate)도 칼럼으로 인식하도록 한다.
- @EntityListeners(AuditingEntityListener.class)
- BaseTimeEntity 클래스에 Auditing 기능을 포함시킨다.
- @CreatedDate
- Entity가 생성되어 저장될 때 시간이 자동 저장된다.
- @LastModifiedDate
- 조회한 Entity의 값을 변경할 때 시간이 자동 저장된다.
public class Posts extends BaseTimeEntity {
...
}
@EnableJpaAuditing // JPA Auditing 활성화
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
출처: 스프링 부트와 AWS로 혼자 구현하는 웹 서비스