[Spring] 동적 쿼리 처리를 위한 Querydsl 설정

[Spring] 동적 쿼리 처리를 위한 Querydsl 설정

Querydsl을 사용하기 위한 설정을 해봅시다.


JPA의 쿼리 메소드 기능과 @Query를 통해 많은 기능을 구현할 수 있지만, 선언할 때 고정된 형태의 값을 가진다는 단점이 존재합니다. 이때문에 복잡한 조합을 이용하는 경우 동적으로 쿼리를 생성해서 처리할 수 있는 기능이 필요합니다.
Querydsl은 이러한 상황을 해결할 수 있는 기술입니다.



1. Querydsl 사이트



1

Querydsl은 다양한 기능을 제공하는데 우리는 이 중 JPA 관련 부분을 적용하려 합니다.

2. build.gradle 추가 - 1



2

위의 그림과 같이 주석처리한 부분을 추가로 작성합니다.
queryDslVersion을 지정해주고 plugins 항목에 querydsl 관련 부분을 추가합니다.

3. build.gradle 추가 - 2



3

다음으로 dependencies에 주석처리한 부분을 추가로 작성합니다.
중간에 잘린 부분은 importedProperties[‘querydsl.version’]}:jakarta” 입니다.
Querydsl을 위한 gradle의 task를 생성하기 위해 추가적으로 dependencies 밑에 코드를 작성합니다.
코드 작성을 마치고 build.gradle 파일을 갱신합니다.

4. compileQuerydsl 실행



4

갱신을 마치면 compileQuerydsl이라는 실행 가능한 task가 추가된 것을 확인할 수 있습니다.
이 task를 실행해 본 뒤 실행 결과로 build 폴더 내에 generated 폴더가 생긴 뒤 QBaseEntity와 QGuestbook가 생성된 것을 확인할 수 있습니다.

5. QGuestBook 확인



5

생성된 QGuestbook 클래스를 살펴보면 내부적으로 선언된 필드가 모두 변수로 처리되는 것을 확인할 수 있습니다.
자동으로 생성되는 것이 의미하는건 Q 클래스를 개발자가 건드리지 않는다는 것입니다.

6. QuerydslPredicateExcutor 상속



6

GuestbookRepository 인터페이스에 추가로 QuerydslPredicateExcutor를 상속하게 코드를 작성합니다.


© 2022. All rights reserved.