정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크.
문자영로 작성하거나 XML 파일에 쿼리를 작성하는 대신, Querydsl이 제공하는 fluent API 를 이용해서 쿼리를 생성 가능
Querydsl은 SQL, JPQL을 코드로 작성할 수 있도록 도와주는 오픈소스 빌더 API
장점
- IDE의 코드 자동 완성 기능을 사용.
- 문법적으로 잘못된 쿼리를 허용하지 않음.
- 컴파일 시점에 문법 오류 발견.
- 도메인 타입과 프로퍼티를 안전하게 참조.
- 도메인 타입의 리팩토링을 더 잘할 수 있음.
- 동적 쿼리 만들기 쉬움.
- 타입 안정성
도메인 타입의 프로퍼티를 반영해서 생성한 쿼리 타입을 이용해서 쿼리를 작성.
완전히 타입에 안전한 방법으로 함수/메서드 호출이 이루어짐. - 일관성
기반 기술에 상관없이 쿼리 경로와 오퍼레이션은 모두 동일
Query I/F는 공통의 상위 I/F를 갖음.
모든 쿼리 인스턴스는 여러 차례 재사용 가능
쿼리 실행 이후 페이징 데이터와 프로젝션 정의는 제거됨.
JPA 쿼리
Spring Data Jpa를 이용해보면, 기본으로 제공해주는 @Query로는 다양한 조회 기능을 사용하기에 한계점이 존재.
이 문제를 해결하기 위해 정적타입을 지원하는 조회 프레임워크 Querydsl 사용.