@QueryProjection은 보통 DTO와 함께 사용되는 것 같아요.
DTO의 생성자에 해당 어노테이션을 붙여주면 이후 빌드 시에 DTO가 Q파일로 생성됩니다.
Querydsl에서 Projection에 대해 먼저 말씀을 드려야할 것 같습니다.
Projection이란, Querydsl을 이용해 엔티티 전체를 가져오는 것이 아니라 조회 대상을 지정해 원하는 값만 조회하는 것을 의미한다고 해요.
그래서 DTO에 @QueryProjecttion을 붙이게되면 해당 DTO에 있는 필드들에 대해서 핏하게 조회를 해올 수 있습니다!
마지막으로 @QueryProjection의 장점에 대해서 찾아봤는데요.
Q클래스로 생성되기 때문에 불면 객체임이 보장이 된다.
컴파일 시점에서 에러를 잡을 수 있다.
정도가 있는 것 같습니다!
++ 승택님 리뷰
DB에서 row를 레코드라고 하고, 컬럼을 보통 Projection이라고 한다.
그래서 Projection이란 select * from 말고, select username, password... from 와 같이 원하는 값만 조회하는 것으로 이해했다.