스프링 JPA Auditing

심규원·2024년 8월 18일

JPA Auditing은 엔티티의 생성, 수정, 삭제 등의 이력을 자동으로 관리해주는 기능. 보통 데이터베이스에서 created_at, updated_at 같은 필드를 두고 레코드의 생성 시간과 수정 시간을 기록하곤 하는데, JPA Auditing을 사용하면 이러한 타임스탬프를 자동으로 관리할 수 있다.

@MappedSuperclass
JPA Entity 클래스들이 해당 추상 클래스를 상속할 경우 createAt, modifiedAt 처럼 추상 클래스에 선언한 멤버 변수를 컬럼으로 인식할 수 있다.

@EntityListeners(AuditingEntityListener.class)
해당 클래스에 Auditing 기능을 포함시켜 준다.

@CreateDate
Entity 객체가 생성되어 저장될 떄 시간이 자동으로 저장됨
최초 생성 시간이 저장되고 다시 수정되면 안되니까 updatable = false 를 추가.

@LastModifiedDate
조회한 Entity 객체의 값을 변경할 떄 변경된 시간이 자동으로 저장됨

@temporal
날짜 타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용.

  • DB에는 Date(날짜), Time(시간), Timestamp(날짜와 시간)라는 세 가지 타입이 별도로 존재
    • DATE : ex) 2023-01-01
    • TIME : ex) 20:21:14
    • TIMESTAMP : ex) 2023-01-01 20:22:38.771000

SpringBootApplication 이 있는 클래스에 @EnableJpaAuditing 을 추가 해주면된다.

그리고 사용할 Entity 에 저렇게 상속시켜주면됨.
근데 상속시켜놓으면 다중상속이 안되기때문에 컴포지션 이라는 방법을 사용해도 된다는데 나중에 알아보자..

0개의 댓글