• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

countQuery 질문(질문수정)

22.01.25 11:30 작성 조회수 101

1

countQuery는 count할 때,  쿼리 최적화를 위해서 하는 걸로  알고 있는데 

 

public Page<MemberTeamDto> searchPageComplex(MemberSearchCondition condition, Pageable pageable) {

List<MemberTeamDto> content = queryFactory

.select(new QMemberTeamDto(member.id.as("memberId"), member.username.as("memberName"), member.age, team.id.as("teamId"), team.name.as("teamName"))) .from(member) .leftJoin(member.team, team)

.where(member.username.eq(condition.getUsername()), team.name.eq(condition.getTeamName()), member.age.goe(condition.getAgeGoe()), member.age.loe(condition.getAgeLoe()))

.offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch();

 

JPAQuery<Member> countQuery = queryFactory .selectFrom(member) .leftJoin(member.team, team) .where(member.username.eq(condition.getUsername()), team.name.eq(condition.getTeamName()), member.age.goe(condition.getAgeGoe()), member.age.loe(condition.getAgeLoe()));

return PageableExecutionUtils.getPage(content, pageable, () -> countQuery.fetchCount()); }

 

어차피 실행될 

List<MemberDto> content = queryFactory.select(..생략..

에다가

long count = content.size();  하면 

count가 나오지만

위처럼 굳이 countQuery를 짜서 쓰는 건

PageableExecutionUtils.getPage(content, pageable, () -> countQuery.fetchCount());

오직 이 기능 때문인가요 ?

답변 1

답변을 작성해보세요.

2

relate16님의 프로필

relate16

질문자

2022.01.26

궁금증이 해결 됐습니다 . :]

long count = content.size();  하면 

해당 페이지의 count일 뿐 

총 몇 페이지까지 있는지 알기 위해서는 

totalCount가 필요하기 때문에 

countQuery가 있어야 되는 거였네요 :[

 

항상 감사합니다 :]

 

스스로 잘 해결하셨습니다^^