Dto의 생성자에 @QueryProjection을 추가

~/MemberDto

@Data
public class MemberDto {

    private String username;
    private int age;
    
    //기본 생성자 
    public MemberDto() {
    }
    
    @QueryProjection
    public MemberDto(String username, int age) {
        this.username = username;
        this.age = age;
      }
}

@QueryProjection 활용 

List<MemberDto> result = queryFactory
          .select(new QMemberDto(member.username, member.age))
          .from(member)
          .fetch();

 

위 방식을 이용하면

컴파일러로 타입을 체크할 수 있어서 가장 안전하다는 장점이 있다. 

하지만 DTO가 Querydsl에 의존하는 점(Querydsl 어노테이션을 dto에서 유지하는 점)과 DTO까지 Q 파일을 생성해야하는 단점이 있다 

+ Recent posts