인프런 커뮤니티 질문&답변

ksh1210sh님의 프로필 이미지
ksh1210sh

작성한 질문수

실전! 스프링 데이터 JPA

JPA Hint & Lock

쿼리 힌트 Page 추가 예제 관련 질문입니다/

작성

·

354

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 

[질문 내용]
안녕하세요. 강의와 자료를 병행해서 보다가 질문이 있어 문의드립니다. 우선적으로

https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%8B%A4%EC%A0%84&unitId=28020&tab=community&category=questionDetail&q=723744

해당 내용을 읽어보았는데도 이해가 되질 않아 문의드리게 된 점 양해부탁드립니다 ㅜ

해당 내용처럼 저도 application.yml 내

use_sql_comments: true 를 추가

쿼리문을 확인하였을 때

forCounting=false

/* select count(m) from Member m where m.username = :username */ select count(member0_.id) as col_0_0_ from member member0_ where member0_.username='member1';

forCounting=true

/* memberRepository.findByUsername */ select count(member0_.id) as col_0_0_ from member member0_ where member0_.username='member1';

위와 같은 결과를 반환받았는데 어떤 차이가 있는지 잘모르겠습니다 ㅜ 어떤 의도를 말씀하시는지 잘모르겠습니다 ㅜ

답변 2

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. ksh1210sh님

우선 Pageable을 사용하게 되면 전체 데이터를 조회해야 하기 때문에 조회 쿼리는 기본이고, 추가로 전체 데이터를 조회하는 카운터 쿼리가 실행됩니다.

결과적으로 쿼리가 2개 실행되는 것이지요.

이 쿼리를 최적화 하기 위해서 힌트를 줄 수 있는데요. 이런 힌트를 줄 때 조회 쿼리에는 힌트를 주는 것이 좋지만, 카운터 쿼리에는 힌트를 적용하지 않는 것이 더 나은 경우들이 종종 있습니다.

예제에서 사용한 힌트는 단순히 주석을 추가하는 힌트이지만, 실제 성능에 영향을 주는 힌트도 사용할 수 있습니다.

그래서 힌트를 둘다 적용하지 않도록 하는 옵션으로 이해하시면 됩니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴이에요.
쿼리 힌트 Page 추가 예제 관련해서 질문이 있으신 것 같아요.

먼저, 질문 내용에서 링크를 제공해주셨는데 해당 링크는 질문 게시글로 연결되어 있더라도 비로그인 상태에서는 접근할 수 없는 것 같아요. 따라서 정확한 내용을 확인하기 위해서는 해당 질문 내용을 구체적으로 설명해주시면 좋을 것 같아요.

그리고 쿼리 힌트 예제에서 forCounting 값이 false일 때는 주석을 포함한 원본 쿼리가 그대로 실행되는 것이고, forCounting 값이 true일 때는 주석이 제거된 쿼리가 실행됩니다. 이 예제에서는 주석이 제거되었을 때의 쿼리 결과와 주석이 포함된 원본 쿼리 결과가 동일한 것을 확인할 수 있어요.

하지만 왜 이렇게 동일한 결과를 얻기 위해 주석을 제거하여 실행하는지에 대한 명확한 의도는 해당 링크의 내용을 참고해야 할 것 같아요. 비로그인 상태에서 해당 링크에 접근할 수 없으므로, 질문자님께서 해당 내용을 정확히 이해하지 못한다면, 질문자님의 코드와 더불어 질문 내용을 보다 자세히 설명해주시면 답변드릴 수 있을 것 같아요.

더 많은 도움이 필요하시다면, 인프런 고객센터를 통해 질문해보시는 것도 좋을 것 같아요. 감사합니다.

ksh1210sh님의 프로필 이미지
ksh1210sh

작성한 질문수

질문하기