결과 조회

리스트

@BeforeEach
void setUp() {
    queryFactory = new JPAQueryFactory(em);

    Team teamA = new Team("teamA");
    Team teamB = new Team("teamB");
    em.persist(teamA);
    em.persist(teamB);

    Member member1 = new Member("member1", 10, teamA);
    Member member2 = new Member("member2", 20, teamA);
    Member member3 = new Member("member3", 30, teamB);
    Member member4 = new Member("member4", 40, teamB);
    em.persist(member1);
    em.persist(member2);
    em.persist(member3);
    em.persist(member4);
}

@Test
void resultFetch() {
  //List
    List<Member> fetch = queryFactory
            .selectFrom(member) //...2
            .fetch(); //...1
            
    assertThat(fetch.size()).isEqualTo(4);
}
  1. fetch()
  2. selectFrom()

단 건

@BeforeEach
void setUp() {
    queryFactory = new JPAQueryFactory(em);

    Team teamA = new Team("teamA");
    Team teamB = new Team("teamB");
    em.persist(teamA);
    em.persist(teamB);

    Member member1 = new Member("member1", 10, teamA);
    Member member2 = new Member("member2", 20, teamA);
    Member member3 = new Member("member3", 30, teamB);
    Member member4 = new Member("member4", 40, teamB);
    em.persist(member1);
    em.persist(member2);
    em.persist(member3);
    em.persist(member4);
}

@Test
void resultFetch() {
    //단 건
    assertThatThrownBy(() -> queryFactory
            .selectFrom(member)
            .fetchOne()) //...1
            .isInstanceOf(NonUniqueResultException.class);
}
  1. fetchOne()

처음 한 건 조회

@BeforeEach
void setUp() {
    queryFactory = new JPAQueryFactory(em);

    Team teamA = new Team("teamA");
    Team teamB = new Team("teamB");
    em.persist(teamA);
    em.persist(teamB);

    Member member1 = new Member("member1", 10, teamA);
    Member member2 = new Member("member2", 20, teamA);
    Member member3 = new Member("member3", 30, teamB);
    Member member4 = new Member("member4", 40, teamB);
    em.persist(member1);
    em.persist(member2);
    em.persist(member3);
    em.persist(member4);
}

@Test
void resultFetch() {
    //처음 한 건 조회
    Member findMember2 = queryFactory
            .selectFrom(member)
            .fetchFirst(); //...1
    assertThat(findMember2.getUsername()).isEqualTo("member1");
}
  1. fetchFirst()

페이징에서 사용

@BeforeEach
void setUp() {
    queryFactory = new JPAQueryFactory(em);

    Team teamA = new Team("teamA");
    Team teamB = new Team("teamB");
    em.persist(teamA);
    em.persist(teamB);

    Member member1 = new Member("member1", 10, teamA);
    Member member2 = new Member("member2", 20, teamA);
    Member member3 = new Member("member3", 30, teamB);
    Member member4 = new Member("member4", 40, teamB);
    em.persist(member1);
    em.persist(member2);
    em.persist(member3);
    em.persist(member4);
}

@Test
void resultFetch() {
		//페이징에서 사용
    QueryResults<Member> results = queryFactory
            .selectFrom(member)
            .offset(1) //...2
            .limit(2)
            .fetchResults(); //...1

    long total = results.getTotal();
    List<Member> members = results.getResults();
    long offset = results.getOffset();
    long limit = results.getLimit();

    assertThat(total).isEqualTo(4);
    assertThat(members).hasSize(2);
    assertThat(offset).isEqualTo(1);
    assertThat(limit).isEqualTo(2);
}
  1. fetchResults()

    Deprecated →참고

  2. offset() , limit()