jowoohyeong / TIGENSOFT

0 stars 0 forks source link

JPA Q클래스 #9

Open jowoohyeong opened 1 year ago

jowoohyeong commented 1 year ago

Q클래스란? Q-Class의 생성은 컴파일 시점이다. JPAAnnotationProcessor 컴파일 시점에 작동을 하는데, 해당 APT가 @Entity와 @Embeddable과 같은 어노테이션을 찾는다. 그 후 해당 내용들을 분석하여 Q-Class들을 생성하게 된다. 이때 APT는 Q-Class을 생성할 때 Entity-Class와 최대한 비슷한 패키지 구조를 유지하려고 한다.

QueryDSL은 Q-Clas을 만들어서 쓰는것일까? Q-Class(Static Class)은 QueryDSL만 생성해서 사용하는 것이 아니라 QueryDSL과 비슷한 Crieteria도 Static Meta Class를 만들어서 사용을 한다. 이런 Static Meta Class ( Q-class ) 를 만드는 기능은 놀랍게도 JPA에서 지원하고 있는 기능이였다.

jowoohyeong commented 1 year ago

Q클래스 인스턴스를 사용하는 3가지 방법

Querydsl에서는 엔티티로 설정된 클래스에 Q모델이라는 쿼리타입 클래스를 미리 생성해놓고 메타데이터로 사용하여 쿼리를 메소드 기반으로 작성한다. 쉽게 말하자면 querydsl 프레임워크를 사용하면서 쿼리문을 작성하려면 Q타입 클래스가 필요하다.