JPA Auditing 적용하기

iy·2024년 1월 22일

Java-JPA

목록 보기
3/12

JPA Auditing 적용 이유

  • 데이터의 생성, 수정되는 시간은 글을 작성했을 때, 댓글을 작성했을 때 등 자주 활용되는데 각각 Entity의 생성, 수정 시간을 매번 작성하는 건 효율적이지 않음
    - Spring Data JPA에선 시간에 대해 자동으로 값을 넣어주는 기능인 JPA Auditing을 제공함

JAP Auditing을 사용하는데 알아둬야 하는 annotation

  1. @ MappedSuperClass
  • JPA엔티티클래스들이 해당 추상 클래스를 상속할 경우 추상 클래스를 선언한 멤버 변수를 컬럼으로 인식시켜주는 annotation
  1. EntityListener(AuditingEntityListener.class)
  • 해당 클래스에 Auditing 기능을 수행할 수 있도록 기능을 포함시켜줌
  1. @CreatedDate
  • Entity 객체가 생성되어 저장될 때 시간이 자동으로 저장됨
  1. @Column(updatable = false)
  • 수정사항 반영 안함
  • 작성일은 최초 시간 이후로 글이 수정이 되더라도 수정되면 안되므로 이 옵션을 추가해줘야 함
  1. @LastModifiedDate
  • 조회한 entity값이 변경이 되면 변경될 때 마다 시간이 새롭게 저장됨
  1. @Temporal
  • 자바의 Date 타입들을 mapping할 때 사용
    1. Date : 2024-01-22
    2. Time : 20:21:14
    3. TimeStamp : 2024-01-22 20:21:14.99999
  1. @EnableJpaAuditing
  • main 클래스에 붙여줘야 상속을 받을 수 있음
  • JPA Auditing 기능을 사용하겠다는 정보를 전달하는 것
// Timestamped 클래스
@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;
}
//main
@EnableJpaAuditing
@SpringBootApplication
public class MemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(MemoApplication.class, args);
    }

}

0개의 댓글