오봉이와 함께하는 개발 블로그

Querydsl - 결과 조회 본문

BE/JPA

Querydsl - 결과 조회

오봉봉이 2022. 9. 16. 00:10
728x90

결과 조회

  • fetch()
    • 리스트 조회
    • 데이터 없으면 빈 리스트 반환
  • fetchOne()
    • 단 건 조회
    • 결과가 없으면
      • null
    • 결과가 둘 이상이면
      • com.querydsl.core.NonUniqueResultException
  • fetchFirst()
    • limit(1).fetchOne()
  • fetchResults()
    • 페이징 정보 포함
    • total count 쿼리 추가 실행
    • 페이징 쿼리가 복잡해지면 성능 때문에 contents(데이터)를 가져오는 쿼리와 total count를 가져오는 쿼리가 다를 때가 있다.
      • 때문에 복잡하고 성능이 중요한 페이징을 할 때는 fetchResults()를 사용하지 말고 쿼리를 따로 날려야 한다.
  • fetchCount()
    • count 쿼리로 변경해서 count 수 조회
@Test
void resultFetch() {
    //List
    List<Member> fetch = queryFactory
            .selectFrom(member)
            .fetch();

    //단 건
    Member findMember1 = queryFactory
            .selectFrom(member)
            .where(member.username.eq("member1"))
            .fetchOne();

    //처음 한 건 조회
    Member findMember2 = queryFactory
            .selectFrom(member)
            .fetchFirst();

    //페이징에서 사용
    QueryResults<Member> results = queryFactory
            .selectFrom(member)
            .fetchResults();
    // 페이징에서 사용하는 메소드
    results.getTotal();
    results.getLimit();
    results.getOffset();
    // 실제 페이징할 때 출력해야 하는 값들
    List<Member> content = results.getResults();

    //count 쿼리로 변경
    long count = queryFactory
            .selectFrom(member)
            .fetchCount();
}
인프런 김영한 지식공유자님 강의 : 실전! Querydsl
728x90

'BE > JPA' 카테고리의 다른 글

Querydsl - 페이징  (0) 2022.09.16
Querydsl - 정렬  (0) 2022.09.16
Querydsl - 검색 조건 쿼리  (0) 2022.09.16
Querydsl - 기본 Q-Type 활용  (0) 2022.09.15
Querydsl - JPQL vs Querydsl  (0) 2022.09.15
Comments