인프런 커뮤니티 질문&답변
QueryDsl 1차 캐시관련
해결된 질문
작성
·
830
1
안녕하세요, 강사님!
강의를 복습하다가 궁금증이 생겨 질문 남깁니다.
조회된 엔티티는 영속화되며 1차 캐시에 저장이 되고
특별한 이벤트?! (EntityManager.clear() 또는 Transation이 종료 등등..)로 1차 캐시 내용이 없어진다고 이해하고 있습니다.
이렇게 이해한 내용 토대로 QueryDsl을 사용해도 1차 캐시를 사용하겠지라는 생각과는 다르게 동작하여 개념이 혼돈되고 있습니다.
아래 사진을 참고하시면
첫번째 쿼리를 실행후 그다음 쿼리 실행시 1차 캐시된 엔티티를 찾아 반환해 줘야하는데 다시 DB에 쿼리를 날려 결과를 가지고왔습니다.
제가 어떤 부분을 잘못 이해하고 있는 걸까요?
퀴즈
71%나 틀려요. 한번 도전해보세요!
순수 JPQL 대비 Querydsl 사용 시 얻을 수 있는 주요 장점은 무엇일까요?
실행 시점에 오류를 쉽게 발견할 수 있다
더 복잡한 데이터베이스 연결 없이 사용 가능하다
컴파일 시점에 타입 안전성을 확보할 수 있다
데이터베이스 종류에 완전히 독립적이다
답변 1
2
김영한
지식공유자
안녕하세요. 데비님^^
em.find()는 영속성 컨텍스트에서 바로 찾아옵니다.
그런데 JPQL의 경우 항상 SQL로 번역되어서 우선 실행이 됩니다.
작성하신 부분도 결국 JPQL이 실행되는 것이기 때문에 SQL이 실행되는 것이 맞습니다.
감사합니다.






답변 감사합니다!!