지금까지 querydsl에서 Q클래스를 생성하는 이유는 타입 안정성을 보장하기 위해 쿼리를 생성할 클래스에 대한 메타 정보를 런타임 전에 생성해야하기 때문이라고 막연하게 알고 있었다.
그렇다면 이미 있는 클래스에 대한 메타정보를 사용하면 되지,
굳이 Q클래스라는 클래스를 또 생성해야하나 한편으론 의문을 가지고 있었다.
그러던 중 Criteria라는 JPA에서 제공하는 동적 쿼리 생성 도구를 알게 되었다.
Criteria도 Querdysl과 마찬가지로 타입 안정성을 챙기고 동적으로 쿼리를 생성할 수 있었지만, 메타 정보 클래스를 따로 생성하진 않았다. 그래서 무슨 차이인가 생각 해보았다.
그 차이는 Criteria는 Springboot-Data-JPA에서 제공하기 때문에 엔티티의 메타 정보를 이용할 수 있는 것이고,
Qeurydsl은 외부 라이브러리이기 때문에 따로 정적 메타 클래스를 생성하는 것이었다.
앞으로는 build.gradle에서 의존성을 추가할 때 아무 생각없이 복붙하지 말고 대충 어떤 기능을 추가하는 지는 알고 있어야겠다.

- querydsl-apt: Querydsl 관련 코드 생성 기능 제공
- QClass 생성해주는 기능
- querydsl-jpa: querydsl 라이브러리
- 메서드 체이닝 제공 기능
'기술 공부' 카테고리의 다른 글
| JWT 리프레시 토큰의 필요성에 대해 (0) | 2024.11.02 |
|---|