스프링 부트 3에서 QueryDSL을 사용하려면
어떤 설정을 해줘야 할까?
QueryDSL 라이브러리 추가하기
보통 스프링 부트 파일을 만드는 스타터스프링(https://start.spring.io/) 사이트에서 Dependencies에서 사용할 라이브러리들을 추가해주지만 QueryDSL은 지원해주지 않는다.
그렇다고 스프링 부트에서 QueryDSL에 대한 버전관리를 안해주는 것은 아니다.
스프링 부트에서 QueryDSL에 대한 버전관리는 해주는데 스프링 부트 스타터에서는 아직 없어서 별도로 직접 추가해줘야 한다.
build.gradle 파일에서
dependencies에 QueryDSL 라이브러리를 추가해준다.
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
또는
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
이렇게 스프링 부트 3 이상 버전 부터는 라이브러리만 추가해주면 된다.
+
스프링 부트 2.x에서는 Q타입 클래스를 직접 Gradle에서 생성을 해줘야 했지만
스프링 부트 3.x부터는 실행 or 빌드를 하면 자동으로 Q타입 클래스가 생성된다.
Q타입 클래스
IntelliJ에서 빌드가 IntelliJ 빌드와 Gradle 빌드에 따라서 Q파일 생성 위치가 달라진다.
Q타입은 컴파일 시점에 자동으로 생성되는 클래스로
버전관리(Git)에 포함하지 않는 것이 좋다. (build폴더를 Git에 포함하지 않는 이유와 동일)
그래서 Q타입이 생성되는 위치를 알맞게 지정해주거나 gitignore에 등록해야 하는데
스프링 부트 3부터는 IntelliJ의 빌드가 Gradle빌드가 권장되도록 설정이 되어있어서
해당 부분은 신경쓰지 않아도 된다.
왜냐하면 Gradle빌드로 되어있다면 Q파일은 이미 gitignore에 등록되어있는 build폴더 안에 생성된다.
build폴더 안에서 기존 Entity 클래스가 있던 위치와 동일한 위치에 Q파일이 생성된다.
(Test파일이 기존 파일과 동일한 위치에 생성되는 느낌과 동일)
Q타입 클래스는 기존 Entity 클래스의 이름앞에 Q가 붙여져 있다.
'QueryDSL' 카테고리의 다른 글
QueryDSL이란? (0) | 2024.01.13 |
---|