• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

플러시 관련 질문드립니다.

18.08.20 00:19 작성 조회수 106

0

findAll 같은 메서드는 플러시를 강제 발생시키는 것은 명확한 이유가 있다고 생각합니다.(강의 말씀 처럼 싱크를 맞춰야 하기 때문에)

그런데 식별자로 조회하는 findOne, findById 같은 메서들은 왜 플러시를 발생시키지 않을까요 ?

제 생각에는
User user = userRepository.save(user); // 아직 플러시를 발생시키지 않았음으로 데이터베이스에는 없는 상태userRepository.findById(user.getId()); // 위에서 플러시를 발생시키지 않았기 때문에 조회되지도 않을거 같습니다.

영속성 컨텍스트가 1차 캐시를 가지고 있기 때문에 플러시를 실행하지 않는거 같습니다.

혹시 이런 이유인가요? 아니면 다른 이유가 있을까요?

답변 1

답변을 작성해보세요.

1

우선 질문 감사합니다.

findBy를 했을 때 해당 id에 해당하는 객체가 영속성 컨텍스트에 있기 때문에 select가 발생하지 않다는 댓글이 맞습니다. "플러시를 발생시킺 않았기 때문에 조회되지도 않을것 같다."는 맞지 않습니다. save를 안 한 이유는 강좌에서 여러번 설명한대로, 테스트에 롤백 트랜잭션이 걸려있기 때문에 싱크를 해야할 필요가 없어서 안한 것이고, findBy에 대한 select를 안한 이유는 (Persistence Context에 이미 들어있어서) 할 필요가 없기 때문에 안한 것일 뿐입니다.