[JPA] Querydsl 메서드 정리

    QueryDsl 메서드 알아보기

    JPA Querydsl은 JPA를 이용하여 동적 쿼리를 작성할 수 있게 해주는 라이브러리입니다. Querydsl은 JPA와 연동하여 사용할 때, 다양한 메소드를 제공합니다. 이 중에서 주요한 메소드를 정리하면 다음과 같습니다.

    메서드명 메서드 설명
    select() 검색 대상 엔티티의 속성을 선택합니다.
    from() 검색 대상 엔티티를 지정합니다.
    where() 조건을 지정합니다.
    orderBy() 정렬을 지정합니다.
    join() 조인을 수행합니다.
    on() 조인 조건을 지정합니다.
    fetch() 즉시 로딩(fetch join)을 수행합니다.
    leftJoin(), innerJoin(), rightJoin(), fullJoin() 각각의 조인 유형에 따라 조인을 수행합니다.
    count() 검색 결과의 개수를 조회합니다.
    distinct() 중복된 결과를 제거합니다.
    groupby() 그룹화를 수행합니다.
    having() 그룹화된 결과에 대한 조건을 지정합니다.
    limit() 검색 결과의 최대 개수를 지정합니다.
    offset() 검색 결과의 시작 위치를 지정합니다.
    exists() 하나 이상의 엔티티가 검색 결과로 존재하는지 확인합니다.

    예시

    public List<Member> searchMember(String username, int age, int offset, int limit) {
        QMember member = QMember.member;
        JPAQueryFactory queryFactory = new JPAQueryFactory(em);
    
        List<Member> members = queryFactory
            .select(member)
            .distinct()
            .from(member)
            .leftJoin(member.team, QTeam.team)
            .where(member.username.eq(username)
                .and(member.age.gt(age)))
            .orderBy(member.age.desc())
            .groupBy(member.id, member.username)
            .having(member.age.avg().gt(20))
            .offset(offset)
            .limit(limit)
            .fetch();
    
        return members;
    }

    위의 예시는 회원(Member) 엔티티를 대상으로 모든 JPA Querydsl 메소드를 사용하는 메소드입니다.

    • select() 메소드를 사용하여 검색 대상 엔티티의 속성을 선택
    • distinct() 메소드를 사용하여 중복된 결과를 제거
    • from() 메소드를 사용하여 검색 대상 엔티티를 지정
    • leftJoin() 메소드를 사용하여 조인을 수행
    • where() 메소드를 사용하여 검색 조건을 지정
    • orderBy() 메소드를 사용하여 검색 결과를 정렬
    • groupBy() 메소드를 사용하여 그룹화를 수행
    • having() 메소드를 사용하여 그룹화된 결과에 대한 조건을 지정
    • offset() 메소드와 limit() 메소드를 사용하여 검색 결과의 시작 위치와 최대 개수를 지정
    • fetch() 메소드를 사용하여 검색 결과를 조회

    위의 예시에서도 QMember 클래스를 사용하여 엔티티를 지정합니다. QTeam 클래스는 회원과 조인할 팀(Team) 엔티티에 대한 Q타입 클래스입니다. 이를 이용하여 컴파일 타임에 검증 가능한 동적 쿼리를 작성할 수 있습니다.

    댓글

    Designed by JB FACTORY