SQL을 JAVA로 type-safe하게 개발 할 수 있는 프레임워크이다.. 문자열로 작성하거나 XML 파일에 쿼리를 작성하는 대신, Querydsl이 제공하는 플루언트(Fluent) API를 이용해서 쿼리를 생성할 수 있다.

Querydsl은 타입에 안전한 방식으로 HQL 쿼리를 실행하기 위한 목적으로 만들어졌다. HQL 쿼리를 작성하다보면 String 연결을 이용하게 되고, 이는 결과적으로 읽기 어려운 코드를 만드는 문제를 야기한다. String을 이용해서 도메인 타입과 프로퍼티를 참조하다보면 오타 등으로 잘못된 참조를 하게 될 수 있으며, 이는 String을 이용해서 HQL 작성할 때 발생하는 또 다른 문제다.

타입에 안전하도록 도메인 모델을 변경하면 소프트웨어 개발에서 큰 이득을 얻게 된다. 도메인의 변경이 직접적으로 쿼리에 반영되고, 쿼리 작성 과정에서 코드 자동완성 기능을 사용함으로써 쿼리를 더 빠르고 안전하게 만들 수 있게 된다.

장점

Query 의 문제점?

Querydsl 원칙

타입 안전성(Type safety)가 QueryDSL의 핵심 원칙이다. 도메인 타입을 통해 생성된 쿼리 타입과 속성을 사용하고, 메서드 호출 역시 모두 타입 안전한 방식으로 처리한다.

일관성(Consistency) 역시 중요한 원칙이다. 공통의 쿼리 인터페이스를 기반으로 여러 구현체를 제공한다.

모든 쿼리 인스턴스를 계속해서 재사용할 수 있다.

Querydsl 의 JPA 쿼리