• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

JpaEventBaseEntity test

23.12.10 13:39 작성 조회수 200

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님의 프로필

y2gcoder

2023.12.10

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

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

감사합니다.

유선목님의 프로필

유선목

질문자

2023.12.12

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