[JAVA][JPA] JPA Auditing으로 생성/수정 시간 자동 저장하기 :: 매운코딩
728x90
300x250

register date와 modify date를 작업이 이뤄질때마다 set하는 것은 번거롭고 귀찮은 작업이다.

JPA의 Aduiting 기능을 통해 생성/수정시간을 자동으로 저장해보도록 하자.

 

1. BaseTimeEntity 추상 클래스 생성

생성시간/수정시간을 변수로가지고 있는 추상 클래스로 모든 Entity들이 상속받도록 한다.

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.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {

    @CreatedDate
    private LocalDateTime createTime;

    @LastModifiedDate
    private LocalDateTime modifiedDate;
}

@MappedSuperclass - 공통된 부분을 상속받을 수 있게 매핑

@EntityListeners(AuditingEntityListener.class) - 해당 클래스에 JPA Aduiting 기능 추가

@CreatedDate - Entity 생성될때 시간 자동 저장

@LastModifiedDate- Entity의 값이 변경될때 시간 자동 저장

 

2. 시간 변수가 필요한 Entity에 BaseTimeEntity를 상속

public class Posts extends BaseTimeEntity{

3. Application main 코드에 JPA Aduiting 활성화 코드 추가

@EnableJpaAuditing
@SpringBootApplication
public class Application {

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

 

끝!

 

 

참고 자료 - github.com/jojoldu/freelec-springboot2-webservice/blob/master/src/main/java/com/jojoldu/book/springboot/domain/BaseTimeEntity.java

728x90

+ Recent posts