본문 바로가기
PROJECT/J-PLAN

데이터베이스 생성, 수정 자동 매핑

by wooksss 2025. 1. 14.
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@Getter
public abstract class AuditableEntity {
    @CreatedDate
    @Column(updatable = false, nullable = false)
    protected LocalDateTime createdAt;

    @LastModifiedDate
    @Column(insertable = false)
    protected LocalDateTime lastModifiedAt;

    @CreatedBy
    @Column(updatable = false, nullable = false)
    protected String createdBy;

    @LastModifiedBy
    @Column(insertable = false)
    protected String lastModifiedBy;
}

 

@EnableJpaAuditing
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

@EnableJpaAuditin 어노테이션은 Spring Data JPA의 감사 기능을 활성화 한다.

JPA 감사는 엔티티의 생성 및 수정을 자동으로 추적함

 

@Component
public class AuditorAwareImpl implements AuditorAware<String> {
    @Override
    public Optional<String> getCurrentAuditor(){
        return Optional.ofNullable(SecurityContextHolder
                .getContext()
                .getAuthentication()
                .getName()
        );
    }
}

 

@CreateBy와 @LastModifiedBy는 AuditorAware<T> 를 구현하여야 저장이 가능하다.

AuditorAware를 구현해주고 SecurityContextHolder를 사용하여 현재 사용자 정보를 가져올 수 있다.

회원가입을 할 경우 CreateBy는 anonymousUser로 저장된다.