JPA Auditing

Gyeongjae Ham·2023년 5월 18일
0
post-thumbnail

Java에서 ORM 기술인 JPA 를 사용해서 도메인(엔티티)을 관계형 데이터베이스 테이블에 매핑할 때 공통적으로 도메인들이 가지고 있는 필드나 컬럼들이 존재한다. 예를 들면 생성일자, 생성자, 수정일자, 수정자 등의 필드 및 컬럼이 있다.

도메인마다 공통적으로 필요하다면 결국 코드가 중복으로 작성될 수밖에 없게 되고 중복을 무척이나 싫어하는 개발자들은 이 문제를 해결하기 위해서 JPA Auditing 이라는 기능을 개발하게 된다.

Audit 은 감시하다, 감사하다 라는 뜻으로 Spring Date JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능이다. 도메인(엔티티)을 영속성 컨텍스트에 저장하거나 조회를 수행한 후에 update 하는 경우 매번 시간 데이터를 입력해 줘야 하는데, 이 기능을 사용하면 자동으로 시간을 매핑해서 테이블에 넣어준다.

package com.fastcampus.springboard.config;

import org.springframework.context.annotat
import org.springframework.context.annotat
import org.springframework.data.domain.Aud
import org.springframework.data.jpa.reposi

import java.util.Optional;

@EnableJpaAuditing // JPA Auditing 기능 활성화
@Configuration
public class JpaConfig {

    @Bean
    public AuditorAware<String> auditorAwa
        return () -> Optional.of("hiyee");
    }
}

위와 같이 config 패키지에 JpaConfig 클래스에 설정해주고 안에 설정해주고 쓰면 된다. 지금 @Bean은 아직 Spring Boot Security 가 붙지 않은 상태에서 임의로 모든 수정자의 이름을 지정해준 모습이다. Spring Boot Security가 구현된다면 수정될 부분이다.

@CreatedDate
private LocalDateTime createdAt; // 생성일시

@CreatedBy
private String createdBy; // 생성자

@LastModifiedDate
private LocalDateTime modifiedAt; // 수정일시

@LastModifiedBy
private String modifiedBy; // 수정자

이처럼 Entity 에서 해당 부분에 해당하는 애노테이션을 달아주기만 하면 사용할 수 있다.
JpaConfig 부분은 Spring Boot Security 구현 후에 이 글에 추가적으로 업데이트 할 예정이다.

Entity 클래스에서도 Auditing을 사용한다는 애노테이션을 달아줘야 한다. Entity 클래스 위에

@EntityListeners(AuditingEntityListener.class)

를 표시해줘야 해당 클래스에서 Auditing 기능이 동작한다

profile
Always be happy 😀

0개의 댓글

관련 채용 정보