QueryDSL은 하이버네이트 쿼리 언어의 쿼리를 타입에 안전한게 생성 및 관리해주는 프레임 워크다.
QureyDSL은 정적 타입을 이용하여 SQL과 같은 쿼리를 생성할 수 있게 해준다.
자바 백엔드 기술은 Spring boot과 Spring DATA JPA를 함께 사용한다. 하지만, 복잡한 쿼리, 동적 쿼리를 구현하는 데 있어 한계가 있다. 이러한 문제점을 해결할 수 있는 것이 QueryDSL이다.
등장 이전에는 쿼리문을 작성하여 컴파일 시에 오류를 발견하는 것이 불가능했다.
아래는 사용예시
의존성 추가
implementation 'com.querydsl:querydsl-jpa'
→ QueryDSL 을 사용하기 위한 라이브러리
implementation 'com.querydsl:querydsl-apt'
→ QClass 를 생성하기 위한 라이브러리
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
→ QueryDSL JPA 의 경우에는 Q 클래스를 활용해서 동작하는데 @Entity 어노테이션을 선언한 클래스를 탐색하고, Q 클래스를 생성한다.
annotationProcessor 'jakarta.persistence:jakarta.persistence-api'
annotationProcessor 'jakarta.annotation:jakarta.annotation-api'
이클립스 재단으로 자바가 이관되면서 java → jakarta 로 이름이 변경되었다.
Q 파일을 찾지 못해서 발생하는 오류인 java.lang.NoClassDefFoundError (javax.annotation.Entity / javax.annotation.Generated) 에러 발생 대응을 위한 코드 이다.