JPA 엔티티에서 공통적으로 필요한 속성과 기능을 모아둔 추상 클래스
모든 엔티티에 공통적으로 필요한 생성일, 수정일을 관리하기 위해 사용
JpaConfig
Spring Data JPA의 Auditing 기능 활성화
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
@Configuration
@EnableJpaAuditing
public class JpaConfig {
}
모든 엔티티에서 자동으로 사용
BaseEntity
@Getter
@EntityListeners(AuditingEntityListener.class)
@MappedSuperclass
public class BaseEntity {
// 생성 시간
@CreatedDate
@Setter(AccessLevel.PRIVATE)
private LocalDateTime createdAt;
// 수정 시간
@LastModifiedDate
@Column(insertable = false)
@Setter(AccessLevel.PRIVATE)
private LocalDateTime modifiedAt;
}
SoftDeletableEntity
소프트 삭제가 필요한 엔티티만 상속 받아서 사용
@Getter
@MappedSuperclass
public abstract class SoftDeletableEntity extends BaseEntity {
// 삭제 시간 (소프트 삭제)
@Column(nullable = true)
private LocalDateTime deletedAt;
public void delete() {
this.deletedAt = LocalDateTime.now();
}
}
import
import java.time.LocalDateTime;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;