본문 바로가기
Spring/JPA

JPQL 과 QueryDsl 의 차이 (기초)

by YoonJong 2022. 10. 9.
728x90

코드 작성에 효율적이며, JPQL 에 없는 큰 장점이 몇가지 있다.

 

1. 컴파일단계에서 에러를 잡아준다.

 -> 자바 문법으로 작성하는 QueryDsl 은 컴파일 오류로 잡을 수 있다.

2. 자동완성 기능이 뛰어나다.

 -> 메서드가 생각이 나지 않을때 자동완성 기능을 쉽게 사용할 수 있다.

3. 동적 쿼리 작성이 효율적이다

 -> 아직 학습하지 않아서 다음에 포스팅.


Entity 클래스는 생략.

 

JPQL 코드

@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");

}

QueryDsl 코드

@Test
public void startQuerydsl() {
    JPAQueryFactory queryFactory = new JPAQueryFactory(em);
    QMember qMember = QMember.member;

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

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

}
728x90

댓글