Everyday Dev System

QueryDSL에서 Q 클래스는 어디에 위치해있을까? 본문

나의 호기심

QueryDSL에서 Q 클래스는 어디에 위치해있을까?

chaeyoung- 2023. 8. 1. 16:59

 

 

chat GPT에도 물어보고 해당 경로로 가서 봤지만, 찾지 못했다.

 

결국 파일 디렉터리 하나하나 들어가서 찾아보았다.

 

 

 

build 폴더도 아닌! out 폴더 내에 있었다.

 

 

 

여기서 궁금한 점이 생겼다.

 

위에 클래스는 MentionId 라는 클래스로, Mention 엔티티의 복합키를 설정하기 위한 파일이다.

임베디드 클래스는 JPA에서 다른 엔티티 클래스에 포함되는 복합 속성을 나타내는 클래스로, 데이터베이스에 별도의 테이블로 매핑되지 않고, 그를 포함하는 Mention 엔티티 클래스의 컬럼으로 매핑된다.

 

 

그런데, 왜 Q클래스가 생성이 되었을까?

@Entity 어노테이션이 기재된 클래스만 생성되는 것이 아니였나?

 

 

 

MentionId 클래스는 @Embeddable 어노테이션이 붙은 클래스이기 때문에 임베디드(embedded) 클래스 이다.

QueryDSL은 이러한 임베디드 클래스에 대해서도 정적 상수로 표현하기 위해 Q 클래스를 생성하여 사용한다고 한다.

 

그렇기 때문에 QueryDSL은 엔티티 클래스와 임베디드 클래스 모두에 대해 Q 클래스를 생성한다.

 

 

 

'나의 호기심' 카테고리의 다른 글

JNI란?  (0) 2023.09.30
Java에서 Exception 뜯어보기  (0) 2023.08.04
AWS의 ELB, ALB, CLB, NLB 란?  (0) 2023.07.28
SimpleJpaRepostory 내부 뜯어보기  (0) 2023.07.26
JPA의 엔티티는 왜 기본 생성자가 있어야 할까?  (0) 2023.07.18