[SpringData JPA] 생성시간, 수정시간 자동 (JPA Auditing, BaseEntity)

2023. 3. 19. 13:44JPA

객체를 생성하거나 수정할 때 생성 날짜, 수정 날짜를 관리하는 경우가 많다.

LocalDateTime.now( )을 매번 setter 하기엔 번거롭다.

그리고 

그래서 모든 Entity의 생성시간, 수정시간을 관리해주는 JPA Auditing이 있다.

 

해당 어노테이션은 SpringBootApplication 을 실행하는 클래스에 함께 적용한다.

즉, Entity를 DB에 적용하기 이전, 이후에 콜백 리스너를 요청하게 해주는 어노테이션이다.

 

 

[사용 예시]

@MappedSuperclass
@Getter
@EntityListeners(AuditingEntityListener.class)
public class BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @CreatedDate
    private LocalDateTime createDate;
    
    @LastModifiedDate
    private LocalDateTime modifyDate;
}

- @MappedSuperClass : 다른 Entity가 BaseEntity를 상속하면 BaseEntity가 가지고 있는 속성들과 jpa를 적용한 것을 모두 가져가게 된다. 즉, 슈퍼클래스로 설정하는 어노테이션이다.

 

- @EntityListeners : 엔티티를 DB에 적용하기 전에 커스텀 콜백 요청, 파라미터로 콜백 요청할 클래스 지정한다. 지금은 

Auditing 을 수행하기 위해 AuditingEntityListener 클래스를 인자로 넘긴다.

 

이제 JPA Auditing 세팅을 마쳤으면 다음과 같이 활성화를 시켜야 한다.

@SpringBootApplication
@EnableJpaAuditing
public class Basic1Application {
	public static void main(String[] args) {
		SpringApplication.run(Basic1Application.class, args);
	}
}