-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
플러시 관련 질문드립니다.
18.08.20 00:19 작성 조회수 106
0
findAll 같은 메서드는 플러시를 강제 발생시키는 것은 명확한 이유가 있다고 생각합니다.(강의 말씀 처럼 싱크를 맞춰야 하기 때문에)
그런데 식별자로 조회하는 findOne, findById 같은 메서들은 왜 플러시를 발생시키지 않을까요 ?
제 생각에는
User user = userRepository.save(user); // 아직 플러시를 발생시키지 않았음으로 데이터베이스에는 없는 상태userRepository.findById(user.getId()); // 위에서 플러시를 발생시키지 않았기 때문에 조회되지도 않을거 같습니다.
영속성 컨텍스트가 1차 캐시를 가지고 있기 때문에 플러시를 실행하지 않는거 같습니다.
혹시 이런 이유인가요? 아니면 다른 이유가 있을까요?
답변을 작성해보세요.
1
백기선
지식공유자2018.08.20
우선 질문 감사합니다.
findBy를 했을 때 해당 id에 해당하는 객체가 영속성 컨텍스트에 있기 때문에 select가 발생하지 않다는 댓글이 맞습니다. "플러시를 발생시킺 않았기 때문에 조회되지도 않을것 같다."는 맞지 않습니다. save를 안 한 이유는 강좌에서 여러번 설명한대로, 테스트에 롤백 트랜잭션이 걸려있기 때문에 싱크를 해야할 필요가 없어서 안한 것이고, findBy에 대한 select를 안한 이유는 (Persistence Context에 이미 들어있어서) 할 필요가 없기 때문에 안한 것일 뿐입니다.
답변 1