티스토리 뷰

반응형

Entity에는 데이터의 생성 시간과 수정 시간이 포함된다. 이 생성 시간과 수정 시간은 유지보수에 중요한 정보로 사용된다.

그렇기 때문에 DB에 삽입, 갱신 전 날짜 데이터를 등록/수정하는 코드가 여러 곳에 들어간다.

이런 코드가 여러 곳에 추가하는 일은 귀찮기도 하고 코드가 지저분해진다.

따라서 위와 같은 문제를 해결하기 위해서 JPA Auditing을 사용한다.

 

Java의 날짜와 시간 API를 보면 java 8 전후로 날짜와 시간 관련한 내용을 볼 수 있다.

 

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 class BaseTimeEntity {
    @CreatedDate
    private LocalDateTime createdTime;

    @LastModifiedDate
    private LocalDateTime modifiedDate;
}

BaseTimeEntity는 모든 Entity의 상위 클래스가 된다.

이 클래스는 Entity들의 createdDate, modifiedDate를 자동으로 관리해준다.

 

@MappedSuperclass

  • JPA Entity 클래스들이 BaseTimeEntity를 상속할 경우 필드들도 칼럼으로 인식

 

@EntityListeners(AuditingEntityListener.class)

  • BaseTimeEntity 클래스에 Auditing 기능 추가

 

@CreatedDate

  • Entity가 생성되어 저장될 때 시간이 자동 저장

 

@LastModifiedDate

  • 조회한 Entity 값을 변경할 때 시간이 자동 저장

 

이 BaseTimeEntity 클래스를 다른 클래스가 상속 받도록 하면 된다.

 

@EnableJpaAuditing // JPA Auditing 활성화
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

그 다음 JPA Auditing을 활성화 시키면 된다.

 

이렇게 하면 엔티티들의 등록일/수정일은 BaseTimeEntity만 상속받으면 자동으로 해결된다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함