Query DSL - 결과 조회

2022. 8. 6. 20:13·공부/JPA
반응형

출처 : 인프런 실전! QueryDSL

Query DSL게시글은 대부분 인프런의 김영한님의 강의인 '실전! Query DSL' 기반으로 내용을 정리했습니다.

 

결과 조회

  • fetch() : List 조회, 데이터가 없으면 빈 List 반환
  • fetchOne() : 단 건 조회
    • 결과가 없으면 : null
    • 결과가 둘 이상이면 : NonUniqueResultException 발생
  • fetchFirst() : limit(1).fetchOne()
  • fetchResults() : 페이징 정보 포함, total count 쿼리 추가 실행
  • fetchCount() : count 쿼리로 쿼리 변경해서 count 수 조회

 

fetchResults

fetch, fetchOne, fetchFirst의 경우는 굳이 실행 안해봐도 어떻게 나오는지 알테니 fetchResults부터 코드를 작성하고 실행해보자.

QueryResults<Member> results = queryFactory
        .selectFrom(member)
        .fetchResults();

results.getTotal();
List<Member> content = results.getResults();

 

페이징할 때 사용할 수 있는 코드이다. 일단 results로 조회를 해오고 getTotal()로 totalCount 쿼리를 따로 날린다. 그리고 getResults()를 하면 contents 쿼리를 날려서 contents 내용을 가져오게 된다.

 // totalCount 쿼리 
/* select
    count(member1) 
from
    Member member1 */ select
        count(member0_.member_id) as col_0_0_ 
    from
        member member0_


// contents 쿼리
/* select
    member1 
from
    Member member1 */ select
        member0_.member_id as member_i1_1_,
        member0_.age as age2_1_,
        member0_.team_id as team_id4_1_,
        member0_.username as username3_1_ 
    from
        member member0_

 

 

fetchCount

count 쿼리로 변경해서 count 수를 조회한다.

long total = queryFactory
        .selectFrom(member)
        .fetchCount();
/* select
    count(member1) 
from
    Member member1 */ select
        count(member0_.member_id) as col_0_0_ 
    from
        member member0_

JPQL에 count(member1)로 엔티티를 직접 넘길 경우에 알아서 id로 바꿔서 조회한다. 결론은 select 절을 지우고 count 쿼리로 변경 된다.

반응형
저작자표시 비영리 변경금지 (새창열림)
'공부/JPA' 카테고리의 다른 글
  • Query DSL - 정렬, 페이징, 집합
  • Query DSL - 검색 조건 쿼리
  • QueryDSL - 기본 Q-Type 활용
  • Query DSL - JPQL vs QueryDSL
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQL
    백준
    넥사크로
    QueryDSL
    코딩테스트
    Spring
    운영체제
    프로그래머스
    프론트엔드
    토비의스프링부트
    에러해결
    방통대
    알고리즘
    RESTful
    Java
    springboot
    토이프로젝트
    oracle
    IT
    react
    스프링부트
    전자정부프레임워크
    MSA
    자바스크립트
    기출문제
    개발자
    인프런
    egov
    JPA
    SpringBoot를 이용한 RESTful Web Service 개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
Query DSL - 결과 조회
상단으로

티스토리툴바