반응형
해당 게시글은 Querydsl에 관하여 공부하다가 정리하는 글들 중 하나이며,
다음 글 - Querydsl 초급 문법. Q-Type에 관하여
에 관심 있으시다면 링크를 연결시켜두었으니 클릭하시면 이동됩니다.
👉 QClass란?
Querydsl을 사용하면 기본적으로 QClass라는 자식이 생성된다. 이는 엔티티 클래스의 메타 데이터를 가지고 있는 클래스이다.
👉 QClass에 관한 의문점
대충 보면 Entity 클래스들 이름 앞에 Q자 하나 붙어서 생긴, 심지어 Entity랑 별반 다를 것 없는 QClass들이 생성되어 다음과 같은 점들이 의아했다.
- QClass는 어떤 과정으로 만들어지는걸까?
- 그냥 Entity를 사용하면 될텐데 굳이 QClass를 새로 생성해서 사용하는 이유는 뭘까?
- QClass는 컴파일 단계에서 엔티티를 기반으로 생성되며, JPA_APT(JPAAnnotationProcessTool)가 @Entity와 같은 특정 어노테이션을 찾고 해당 클래스를 분석해서 만든다.
- QClass는 엔티티 클래스의 메타 정보를 담고 있는 클래스로, Querydsl은 이를 이용하여 타입 안정성(Type safe)를 보장하며 쿼리를 작성할 수 있게 된다.
- QClass를 사용하여 쿼리를 작성하면 엔티티 속성을 직접 참조하고 조합하여 쿼리를 구성할 수 있다.
- QClass를 사용하면 컴파일 시점에 오류를 확인할 수 있다.
- QClass는 엔티티 속성의 타입을 정확하게 표현하므로, 타입에 맞지 않는 연산이나 비교를 시도하면 컴파일러가 오류를 감지할 수 있다.
- IDE의 자동완성 기능을 활용하여 속성 이름을 직접 기억하지 않고 쿼리 작성을 보다 편리하게 할 수 있다.
👉 정리해보면,
이전 게시글부터 Querydsl 및 QClass에 대해서 공부해보았는데, 이들의 가장 큰 장점은 컴파일 단계에서 에러를 잡을 수 있다는 점 같다. JPQL은 문자열에서 오타 혹은 문법적인 오류가 발생해도 런타인 시점에만 에러 확인이 가능했기 때문에 Querydsl이 이 문제를 해결해주어서 널리 사용되는 것 같다.
또한, 공식 홈페이지에도 있듯 type safe 즉, 엔티티를 직접 사용하는 것이 아니라, 엔티티 클래스 정보 활용을 위해 QClass를 만들어 사용함으로서 타입 안전한 쿼리작성을 할 수 있다는 점도 장점 같다.
참고
반응형
'Spring > Querydsl' 카테고리의 다른 글
Querydsl을 사용하는 이유 (0) | 2024.03.03 |
---|---|
Query(쿼리)란 무엇인가? (0) | 2024.03.03 |
[실전! Querydsl 강의] 를 들으며 (인프런 - 김영한 강사님) (0) | 2024.02.28 |