부트모아

[V1] 메타데이터 자동 저장하기

승무_ 2024. 9. 28. 14:40

부트캠프의 정보를 알려주는 게시글을 작성할 때, 데이터베이스에 단순히 제목, 본문만을 저장하는 것보다 추후 트래킹을 위해 누가 작성했는지, 언제 작성 되었는지, 언제 마지막으로 수정 됐는지 등 메타데이터를 같이 저장할 필요성을 느꼈다. 그런데 모든 테이블마다 이러한 메타데이터를 일일이 수정하는 것은 비효율적이라 생각해 관련 자료를 살펴보다 JPA Auditing 을 발견하였다.

 

JPA Auditing은 도메인을 영속성 컨텍스트에 저장하거나 업데이트할 때, 자동으로 시간 및 사용자 정보를 매핑하여 데이터베이스에 넣어주는 기술이다.

 

@CreatedDate private LocalDateTime createdAt;
@CreatedBy private String createdBy;
@LastModifiedDate private LocalDateTime modifiedAt;
@LastModifiedBy private String modifiedBy;

미리 제공되는 어노테이션을 이용해 간단하게 auditing 기능을 적용하였다.

 

🔥 문제 발생

아직 사용자 인증 기능을 구현하지 않아, 게시글이 insert 될 때, @CreatedBy에서 문제가 생기는 것을 확인하였다.

 

문제를 해결하기 위해 사용자 인증 기능을 구현하기 전까지 임시방편이 필요했고

@EnableJpaAuditing
@Configuration
public class JpaConfig {
	
    @Bean
    public AuditorAware<String> auditorAware() {
        return () -> Optional.of("swkang");
    }
}

다음과 같이 Jpa 설정파일을 만든 후, 사용자는 "swkang"이 되도록 해주었다.