기존의 JPA 방식대로라면 jpql은 string으로 짜다보니 런타임 에러가 발생 할 수 있다.
JPA,MongoDB,SQL 같은 기술들을 위해 type-safe SQL을 만드는 프레임워크이다.
Annotation Processing Tool로 (JPA같은 경우)
@Entity 에노테이션이 붙은 클래스의 Q객체를 만든다.
QueryDSL-JPA은 JPQL을 만들어주는 빌더 역할을 한다고 보면 된다.
만약 JPQL로 해결하기 어려운 복잡한 쿼리는 네이티브 SQL쿼리를 사용해라
// build.gradle
dependencies {
//QueryDsl 추가
implementation "com.querydsl:querydsl-jpa"
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
...
}
// build.gradle
// QueryDsl 추가 , 자동 생성된 Q클래스 gradle clean으로 제거
clean{
delete file('src/main/generated')
}
만약 intelliJ 빌드 시 gradle clean으로 삭제하고 싶다면 위 코드를 추가한다.
Q타입은 컴파일 시점에 자동 생성되므로 git에 포함하지 않는 것이 좋다.
gradle을 통해서 실행
만약 gradle로 build 설정이 되어있다면
빌드 후에 컴파일 자바 작업 수행해서 Q클래스를 만든다.
gradle로 빌드를 하게된다면 /build 디렉토리에 Q타입이 생성이 된다.
인텔리제이가 자바를 찾아서 실행
인텔리제이로 build 설정
프로젝트 build를 실행하면 /src/main/generated 하위에 Q타입이 생성된다.
만약 에러 발생시 querydsl gradle
키워드로 검색