작성
·
41
0
같은 조회이지만 JPQL은 무조건 플러시한다는 개념을 알게되었습니다 반면 find()는 그렇지 않은것으로 아는데 find()또한 1차 캐시에서 가져오지 못할 경우 플러시 후 가져와야하지 않나요? 이 두 방식은 결국 "플러시"라는 차이가 있어보이는데 이유에 대해 이해가 가지 않네요.
영속성 컨텍스트에서 관리되는 엔티티 객체에 대해 수정을 할 경우 커밋시도시 먼저 엔티티의 최종적 모습을 확인해서 Update쿼리문을 만든다고 생각(쓰기지연저장소에 저장)했습니다. 반면 persist() 곧바로 쿼리문이 쓰기지연 저장소에 insert문으로 저장된다고 인지중입니다. 그렇다면 persist()후에 해당 엔티티를 수정을 가한다면 최종적으로 커밋시에 insert + update 두 쿼리문이 수행되는 걸까요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 영한노게임님.
질문해주신 두 가지 주제에 대해 답변드리겠습니다.
em.find()와 JPQL 조회의 flush 차이점
유사한 질문을 다룬 답변을 참고하세요:
- Percictence Context에 대해 질문있습니다
- em.find()와 영속성 컨텍스트 관련 질문
영속화된 엔티티 수정과 쿼리 실행
유사한 질문을 다룬 답변을 참고하세요:
- JPA 1차 캐시와 쓰기지연 DB 질문 드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.