JPQL vs Query DSL

이번에 조회 쿼리를 작성하면서 조건은 1개밖에 없어서 동적쿼리는 필요없지만, 테이블 조인을 많이하면서 가독성이 많이 떨어진다고 생각했다. 그리고 JPA를 사용하면서 쿼리문을 작성해야할 때, JPQL 와 Query DSL 중 뭘써야하는지 왜써야하는지 정확한 기준을 갖고 있지 않아서 둘의 차이점을 정리해본다.

JPQL

JPQL 구현방법

  1. EntityManager 활용
  2. @Query 애노테이션 사용

JPQL의 문제점

  1. 쿼리를 String 형태로 작성하기 때문에, 개발자 의존적인 형태이다.
  2. 컴파일 단계에서 type check가 불가능하다.
  3. 2의 문제로 런타임 단계에서 오류를 발견하기 때문에 에러 발생 위험이 있다.

Query DSL