[QueryDSL]

윤경·2021년 11월 27일
0


QueryDSL이란

  • QueryDSL 정적 타입을 이용해 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크
  • SQL, JPQL을 코드로 작성할 수 있도록 도와주는 빌더 API
    (쿼리를 자바코드로 작성할 수 있도록 도와주는 기술)
  • 오픈소스

SQL, JPQL의 문제점

  • 문자열이라 Type-check가 불가능함
  • 자바와 문자열의 한계로 문제를 애플리케이션 로딩 시점에야 알 수 있음(컴파일 시점엔 알 수 없음)
  • 해당 로직 실행 전까지 작동 여부를 확인할 수 없음
  • 해당 쿼리 실행 시점에 오류를 발견할 수 있음

QueryDSL 장점

  • 문자가 아닌 코드로 작성
  • SpringData JPA로 해결하지 못하는 복잡한 쿼리/동적 쿼리를 해결할 수 있음
  • 컴파일 시점에 문법 오류를 발견할 수 있음
  • IDE의 도움을 받아 코드를 자동 완성시킬 수 있음
  • 단순하고 쉬우며 코드 모양이 JPQL과 거의 비슷함
  • ⭐️ 동적 쿼리

JPQL은 정적 쿼리이기 때문에 문자열 더하기를 해야하기 때문에 큰 단점을 가진다.
반면 QueryDSL은 동적 쿼리이기 때문에 코드를 그냥 더하면 되어 수월하게 코드를 짤 수 있다.
또한, QueryDSL은 원하는 필드만 뽑아 DTO로 뽑아내는 기능도 제공된다.

QueryDSL 원칙

  • QueryDSL의 핵심 원칙은 타입 안정성(Type safety)이다.
    도메인 타입의 프로퍼티를 반영해 생성한 쿼리 타입을 이용해 쿼리를 작성하게 된다. 또한, 완전히 타입에 안전한 방법으로 함수/메소드 호출이 이루어진다.
  • 일관성(consistency)
    기반 기술에 상관없이 쿼리 경로와 오퍼레이션은 모두 동일하며, Query 인터페이스는 공통의 상위 인터페이스를 갖는다.

참고
참고
참고

profile
개발 바보 이사 중

0개의 댓글