본문 바로가기
스프링

[Spring] JPA Auditing

by 리포터12 2022. 12. 18.
728x90

보통 Entity 에는 해당 데이터의 생성시간, 수정시간이 포함됨. 

유지보수할 때 굉장히 중요한 정보이기 때문임.

 

그럼 Entity 마다 시간 정보를 전부 넣어야 하나? - 대부분 그러함.

그럼 Entity 마다 시간 정보를 전부 작성 해야 하나? - ㄴㄴ 너무 비효율적임.

 

이런 단순하고 반복적인 코드. 좋.지.않.아.

시간 많이 들고, 귀찮고, 코드 지저분해지고 단점 투성이.

 

이런 문제를 해결 해주는 게 'JPA Auditing' 임.

 

JAVA8부터 LocalDate / LocalDateTime 이 추가됨.

 

package com.auth.winterspring.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 // 1. JPA Entity 클래스들의 본 클래스를 상속할 경우, 필드들도 컬럼으로 인식하게 함.
@EntityListeners(AuditingEntityListener.class) // 2. 본 클래스에 Auditing 기능 포함 시킴.
public abstract class Timestamped {

    @CreatedDate    // 3. 엔티티 생성되어 저장될 때 생성시간 작성
    private LocalDateTime createdDate;

    @LastModifiedDate   // 4. 조회한 엔티티 값을 변경한 시간이 자동 저장됨
    private  LocalDateTime modifiedDate;
}
package com.auth.winterspring;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing	// 5. JPA Auditing 어노테이션들을 활성화 시키는 어노테이션 추가
@SpringBootApplication
public class WinterspringApplication {

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

}
728x90

'스프링' 카테고리의 다른 글

컴포넌트 스캔 & DI(Dependency Injection)  (0) 2022.12.19
@ResponseBody  (0) 2022.12.19
[Spring] 인증과 인가  (0) 2022.12.17
애노테이션 몇 개  (0) 2022.12.16
[Spring] @ResponseBody  (0) 2022.12.08

댓글