만약 궁금하다면 @PrePersist, @PostPersist, @PreUpdate, @PostUpdate 키워드로 찾아볼 것
생성일/수정일/생성자를 자동화할 때 사용하는게 바로 JPA Auditing
Spring Data JPA 에서 JPA 를 사용하기 위해서는 SpringBoot 설정 클래스에 @EnableJpaAuditing 을 적어줘야한다.
@Getter
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
public class TimeBaseEntity {
ZoneId zoneId = ZoneId.of("Asia/Seoul");
@CreatedDate
@Column(updatable = false)
private ZonedDateTime createdAt;
@LastModifiedDate
private ZonedDateTime modifiedAt;
}
엔티티를 DB에 적용하기 전, 이후에 커스텀 콜백을 요청할 수 있는 어노테이션이다.
부모 클래스(엔티티)에 필드를 선언하고 단순히 속성만 받아서 사용하고싶을 때 사용하는 방법이다.
엔티티의 공통 매핑 정보가 필요할 때 주로 사용한다.
Spring Data JPA 의 고유 기능은 아니고 Spring Data 에 있는 어노테이션으로 Spring Data 에서 추상화 해놓은 것이다.
@Getter
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
public class TimeBaseEntity {
ZoneId zoneId = ZoneId.of("Asia/Seoul");
@CreatedDate
@Column(updatable = false)
private ZonedDateTime createdAt;
@LastModifiedDate
private ZonedDateTime modifiedAt;
}
public class User extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String address;
private int age;
}
auditor 설정시 main문으로 넣어서 추가하면 향후 Mock 테스트할 때 오류가 날 수 있다.
@Configuration 자바 파일 분리하여 적용한다.
@Configuration
@EnableJpaAuditing
public class JpaConfig {
}