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 |
댓글