본문 바로가기
Back-End/Spring

(2) QuerydslRepositorySupport - Tuple 활용

by 어렵다어려웡 2021. 3. 9.

동일한 엔티티 객체 단위의 데이터를 가져올 떄는 크게 상관이 없지만

각각의 다른 타입의 데이터를 추출할 때 많이 사용된다.

 

Tuple을 이용한 간단한 예제를 작성해서 어떤식으로 작성을 해서 사용하는지 익혀놓는다.

 

@Override 
public Board search() {
	//1. Q도메인 생성
    QBoard board = QBoard.board;
    QReply reply = QReply.reply;
    QMember member = QMember.member;
    
    // 2. from 절 설정
    JPQLQuery<board> jpqlQuery = from(board);
	
    // 3. join
    jpqlQuery.leftJoin(member).on(board.writer.eq(member);
    jpqlQuery.leftJoin(reply).on(reply.board.eq(board);
    
    // 4. Tuple을 사용해서 쿼리문 저장
    JPQLQuery<Tuple> tuple = jpqlQuery.select(board, member, reply.count());
    
    // 5. group by
    tuple.groupBy(board);
    
    // tuple로 생성하여 만든 쿼리문의 결과집합을 가져온다.
    List<Tuple> result = tuple.fetch();

	return null;
}

 기존에 @Query로 작성할 떄는 특정 클래스를 기준으로 연관관계가 참조된 엔티티를 불러올때

 on절을 사용하지 않아도 되지만 JPQLQuery로 설정 할때는 on절이 무조건적으로 들어갔다.