부트캠프의 정보를 알려주는 게시글을 작성할 때, 데이터베이스에 단순히 제목, 본문만을 저장하는 것보다 추후 트래킹을 위해 누가 작성했는지, 언제 작성 되었는지, 언제 마지막으로 수정 됐는지 등 메타데이터를 같이 저장할 필요성을 느꼈다. 그런데 모든 테이블마다 이러한 메타데이터를 일일이 수정하는 것은 비효율적이라 생각해 관련 자료를 살펴보다 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"이 되도록 해주었다.
'부트모아' 카테고리의 다른 글
[V1] 엔티티에 기본 생성자가 반드시 필요한 이유 (1) | 2024.09.28 |
---|---|
[V1] 수정기능 구현시 쿼리수 줄이기 (0) | 2024.09.28 |
[V1] 사용자 인증 구현 (1) | 2024.09.28 |
[V1] 셀프 조인을 통한 대댓글 구현 (1) | 2024.09.28 |
[V2] JPA는 sql injection에 무조건 안전한가? (0) | 2024.09.28 |