인프런 커뮤니티 질문&답변

모깅님의 프로필 이미지
모깅

작성한 질문수

실전! 스프링 데이터 JPA

Auditing

JpaEventBaseEntity test

해결된 질문

작성

·

355

0

@Test
    public void JpaEventBaseEntity() throws InterruptedException {
        Member member = new Member("member1");
        memberRepository.save(member); //@Prepersist

        Thread.sleep(100);
        member.setUsername("member2");

        em.flush();
        em.clear();

        Member findMember = memberRepository.findById(member.getId()).get();

        System.out.println("findMember.getCreateDate() = " + findMember.getCreateDate());
        System.out.println("findMember.getUpdateDate() = " + findMember.getUpdateDate());
    }

Thread.sleep을 해준 이유가 무엇인가요??

답변 1

1

안녕하세요. 유선목님, 공식 서포터즈 y2gcoder입니다.

Auditing 기능으로 입력된 생성일시와 수정일시의 시간 차이를 보여드리기 위해서입니다!
sleep을 넣어주지 않는다면 테스트코드는 빠른 시간 내에 엔티티를 저장후 값을 바꾼후 flush 하기 때문에 생성일시와 수정일시의 차이가 나지 않을 수 있습니다! 그래서 임의로 sleep을 줘서 @PrePersist 와 @PreUpdate의 실행 시간 차이가 유의미하게 나는 것을 볼 수 있습니다!
10분 30초 경부터 테스트 결과에 대해 말씀해주시고 계신게 그 부분입니다!

감사합니다.

모깅님의 프로필 이미지
모깅
질문자

이해했습니다 감사합니다 ㅎㅎ!

모깅님의 프로필 이미지
모깅

작성한 질문수

질문하기