[Spring] Q클래스를 사용하는 이유

휘Bin·2023년 5월 6일
0
post-thumbnail

JavaSpringBoot를 공부하며 프로젝트를 진행하다가 Q클래스를 사용했다. 근데 책을 봐도, 구글링을 해도 명확히 Q클래스를 사용하는 이유에 대해서 명쾌하게 해설해주는 글은 없었다ㅠㅜ
QueryDSI로 개발을 하려면 Q-Class를 이용해 개발을 해야한다. 근데 사용하면서도 왜 굳이 이런 방식이 필요할까...라는 생각을 했다.
그러던 와중 하나의 글을 발견해서 참고해서 쓰고, 원본 출처도 남겨놓겠다!

[Q-Class는 어떻게 생성될까?]

Q-Class는 컴파일 시점에 생성된다.
컴파일 시점에 JPAAnnotationProcessor가 작동하는데, 해당 APT가 @Entity와 @Embeddable과 같은 어노테이션을 찾는다.

[그럼 왜 QueryDSL은 Q-Class를 만들어서 쓸까?]

Q-Class라는 것(Static Class)은 QueryDSL만 생성해서 사용하는 것이 아니라, QueryDSL과 비슷한 Crieteria도 Static Meta Class를 만들어서 아용한다. 이런 Static Meta Class(Q-Class)를 만드는 기능은 JPA에서 지원하고 있는 기능이다.

[그럼 왜 MetaClasS(Q-Class)라는 것을 만들까?]

EntityClass에서는 property에 접근을 하려면 객체를 만들어 접근해야한다.
그래서 MetaClass, 즉, static한 Class를 만들어 지원을 하게되면, 객체를 생성할 필요없이 static이므로 property에 바로 접근하여 사용할 수 있게된다.
따라서 QueryDSL을 사용할 때, 해당 Entity클래스의 propery에 접근을 바로 할 수 있었던 것이라는 것이다.

profile
One-step, one-step, steadily growing developer

0개의 댓글