본문 바로가기

JPA

QueryDSL은 왜 Q-Class를 사용할까?

Entity를 compile하게 되면 static한 QClass들이 생성된다. 해당 Class들은 Meta Data에 대한 정보를 가지고 있는 Class들이다.

 

그렇다면 왜 Meta Class ( Q-Class )를 만드는 것일까 ?

자바에서는 객체에 접근하기 위해서는 new라는 키워드를 통해 객체를 생성해주어야 한다.

Entity Class에서도 Property에 접근을 하기 위해서는 생성해줄 필요성이 있다는 이야기이다.

 

하지만, 이는 Java의 RunTime단계 즉, Spring Boot가 실행하면서 Entity에 해당하는 테이블을 Check하든지 등의 작업을 할때, 통제할수 있는 부분이 아니다.

따라서, Meta Class - 즉 static한 class를 만들게 되면 객체를 생성할 필요없이 property에 바로 접근하여 사용할수 있는 것이다.

 

따라서, Query Dsl을 사용할때, Entity의 Property에 접근이 가능했던 것이다.

'JPA' 카테고리의 다른 글

영속성 컨텐스트란 ?  (0) 2022.07.29
1. JPA란  (0) 2022.01.18