본문 바로가기
JPA

Querydsl 소개

by ppirae 2022. 7. 19.

기존에 스프링 데이터 jpa를 사용하면서 JPQL을 사용하여 query를 진행하였다.

JPQL은 복잡한 로직의 경우 그 길이가 길어져 복잡하고 반복적으로 사용하게 된다.

 

Querydsl을 사용하면 

1. java 코드를 작성하듯 쿼리를 작성하여 컴파일 시점에 오류 체크가 가능

2. IDE의 자동완성 기능의 도움을 받을수 있음

3. 동적인 쿼리 작성 편리

이 외에도 수많은 장점이 있다.

 

@Test
public void startJPQL() {
    //member1을 찾아라.
    String qlString =
            "select m from Member m " +
            "where m.username = :username";

    Member findMember = em.createQuery(qlString, Member.class)
            .setParameter("username", "member1")
            .getSingleResult();

    assertThat(findMember.getUsername()).isEqualTo("member1");
}

이 코드는 JPQL로 작성된 member1을 찾는 코드이고

@Test
public void startQuerydsl() {
    JPAQueryFactory queryFactory = new JPAQueryFactory(em);
    QMember m = new QMember("m");

    Member findMember = queryFactory
            .select(m)
            .from(m)
            .where(m.username.eq("member1"))
            .fetchOne();

    assertThat(findMember.getUsername()).isEqualTo("member1");
}

이 코드는 Querydsl로 작성된 코드이다.

이 쿼리는 간단해서 비슷하지만, 복잡하거나 동적쿼리는 Querydsl이 매우 좋다.

 

현업 (실무) 에서는 관계형 DB를 사용하는 경우

스프링 데이터 JPA와 Querydsl은 같이 묶어가는 경우가 필수라고 한다.

 


인프런 김영한님의 Querydsl 강의를 듣고 작성한 글입니다.

https://inf.run/M3AR

 

실전! Querydsl - 인프런 | 강의

Querydsl의 기초부터 실무 활용까지, 한번에 해결해보세요!, - 강의 소개 | 인프런...

www.inflearn.com

 

댓글