inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

JPA Hint & Lock

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

412

ksh1210sh

작성한 질문수 2

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';

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

java spring spring-boot jpa

답변 2

1

김영한

안녕하세요. ksh1210sh님

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

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

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

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

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

감사합니다.

0

인프런 AI 인턴

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

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

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

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

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

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

70

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

107

3

MemberRepository 구현체

0

58

1

pdf 표현 질문드립니다.

0

62

1

로그가 남지 않는 문제.

0

81

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

70

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

72

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

91

2

Sort 인터페이스는 잘 사용 안하나요?

0

52

1

스캔대상 질문드립니다.

0

46

1

하이버네이트6에서의 최적화에 이은 질문

0

85

1

save() vs saveAndFlush DB 통신 횟수

0

54

1

순수 JPA 리포지토리 코드 수정부분

0

86

2

bulk연산 후 flush하는 이유를 모르겠어요

0

152

3

bulk insert 질문입니다.

0

178

2

교만했던 것 같아요.

0

147

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

147

2

동적 테이블에 대한 질문

0

86

1

영속성 전이와 연관관계

0

130

2

강의 10:25 질문

0

74

1

단건 update 질문

0

95

2

엔티티 와 도메인의 경계

0

127

1

UsernameOnlyDto 타입 type mismatch 오류

0

119

1

Projection 개념과 데이터 전달과정에 대해 질문 있습니다.

0

136

1