Querydsl이란? (+ JPQL)

wisdom·2022년 10월 9일
0

Spring Boot

목록 보기
4/7
post-thumbnail

Querydsl이란 JPQL 빌더를 말하며, 문자열이 아닌 코드로 쿼리를 작성할 수 있어 다양한 이점이 있다.

그렇다면 먼저 JPQL이 무엇인지 알아보자.

JPQL (Java Persistence Query Language)

  • 테이블이 아닌 엔티티 객체를 대상으로 검색하는 객체지향 쿼리
  • SQL을 추상화해서 특정 데이터베이스SQL에 의존하지 않음
  • JPA는 JPQL을 분석한 후 적절한 SQL을 만들어 데이터베이스를 조회한다.
  • 방언(Dialect)만 변경하면 JPQL을 수정하지 않고 자연스럽게 DB 변경 가능하다.

문제점

Spring Data JPA가 기본적으로 제공해주는 CRUD 메서드 및 쿼리 메서드 기능을 사용하더라도, 원하는 조건의 데이터를 수집하기 위해서는 필연적으로 JPQL을 작성하게 된다.

간단한 로직을 작성하는데 큰 문제는 없으나, 복잡한 로직의 경우 개행이 포함된 쿼리 문자열이 상당히 길어진다.
JPQL 문자열에 오타 혹은 문법적인 오류가 존재하는 경우, 정적 쿼리라면 어플리케이션 로딩 시점에 이를 발견할 수 있으나 그 외는 런타임 시점에서 에러가 발생한다.


Querydsl

  • jpql 빌더로써, JPA를 사용하다보면 복잡한 로직의 경우 직접 JPQL 문자열을 작성함으로써 발생하는 문제를 해결해준다.
  • 코드로 쿼리를 작성할 수 있도록 지원하여, 더욱 직관적이고 오류를 확인하기 쉽게 해준다.

장점

  1. 문자가 아닌 코드로 쿼리를 작성함으로써, 컴파일 시점에 문법 오류를 쉽게 확인할 수 있다.
  2. 자동 완성 등 IDE의 도움을 받을 수 있다.
  3. 동적인 쿼리 작성이 편리하다.
  4. 쿼리 작성 시 제약 조건 등을 메서드 추출 을 통해 재사용할 수 있다.
profile
백엔드 개발자

0개의 댓글