LocalDate
Java의 기본 타입인 Date의 문제점을 고친 타입 (Java8)
- 불변 객체가 아님 (멀티스레드 환경에서 문제 발생 가능함)
- 10월 나타내는 Calendar.OCTOBER의 숫자 값이 9
- Joda Time 이라는 오픈소스 사용해서 문제점 피했었음
BaseTimeEntity
모든 Entity의 상위 클래스가 되어 Entity 클래스들의 createdDtae, modifiedDate를 자동으로 관리해줌
package com.springAWS.domain;
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 { //모든 Entity의 상위 글래스가 되어서 Entity들의 createdDate, modifiedDate를 자동 관리함
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
}
- @MappedSuperclass
- JPA Entity 클래스들이 BaseTiemEntity를 상속하면 필드들 (createdDate, modifiedDate)도 칼럼으로 인식하게 함
- @EntityListeners(AuditingEntityListener.class)
- BaseTimeEntity 클래스에 Auditing 기능 포함시킴
- @CreatedDate
- Entity가 생성돼 저장될 때 시간이 자동 저장됨
- @LastModifiedDate
- 조회된 Entity 값을 변경할 때 시간이 자동 저장됨
Posts 클래스가 BaseTimeEntity를 상속받게 변경하기
Application 클래스에 @EnableJpaAuditing 애노테이션 추가하기