프리 정보 컨텐츠

JPA Auditing을 통한 생성시간/수정시간 자동화방법 본문

JAVA/JPA

JPA Auditing을 통한 생성시간/수정시간 자동화방법

쏜스 2021. 6. 27. 19:13

엔티티 (Entity) 에는 데이터의 생성시간과 수정시간을 포함합니다.

유지보수에 있어서 DB에는 삽입하기 전

 

갱신하기전에 날짜 데이터를 등록/수정하는 코드가 여기저기 들어가는 불편함을 해소하고자

JPA Auditing을 통하여 자동화하는 방법을 사용합니다.

 

JPA Auditing을 통한 생성시간/수정시간을 자동화하는 방법에 대해서 알아보겠습니다.

public class Posts extends BaseTimeEntity {
	// Do some code..
}

위에서 적어준 BaseTimeEntity를 상속받도록 변경해줍니다.

추가적으로 JPA Auditing 어노테이션을 모두 활성화할 수 있도록 

main Application 클래스에 활성화 어노테이션 하나를 추가합니다.

@EnableJpaAuditing		// <-- JPA Auditing 활성화
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);      
    }
}

JPA 활성화를 위한 어노테이션 @EnableJpaAuditing 을 추가한 후 기능이 잘동작하는지 

테스트 코드에 추가적으로 JPA Auditing 코드를 작성한 후 결과를 확인합니다.

    @Test
    public void BaseTimeEntity_등록(){
        //given
        LocalDateTime now = LocalDateTime.of(2019, 6, 4, 0, 0, 0);
        postsRepository.save(Posts.builder()
                .title("title")
                .content("content")
                .author("author")
                .build());
        //when
        List<Posts> postsList = postsRepository.findAll();

        //then
        Posts posts = postsList.get(0);

        System.out.println(">>>>>>>>>>> createDate="+posts.getCreatedDate()+", modifiedDate="+posts.getModifiedDate());

        assertThat(posts.getCreatedDate()).isAfter(now);
        assertThat(posts.getModifiedDate()).isAfter(now);
    }

위와 같이 테스트코드를 작성한 후 실행해보면 등록일/수정일이 BaseTimeEntity만 상속받으면

자동으로 해결되는 모습을 볼 수 있습니다.

Comments