개요

순수 JPA 에서 DTO 조회

@Data
public class MemberDto {
    private String userName;
    private int age;

    public MemberDto() {
    }

    public MemberDto(String userName, int age) {
        this.userName = userName;
        this.age = age;
    }
}
@Test
void findDtoByJPQL() {
    //given

    //when
    String qlString = "select new study.querydsl.dto.MemberDto(m.userName, m.age) from Member m";

    List<MemberDto> result = em.createQuery(qlString, MemberDto.class)
            .getResultList();

    //then
    for (MemberDto memberDto : result) {
        System.out.println("memberDto = " + memberDto);
    }
}

Querydsl 빈 생성(Bean pipulation)

프로퍼티(Setter) 접근

@Test
void findDtoBySetter() {
    //given

    //when
    List<MemberDto> result = jpaQueryFactory
            .select(Projections.bean(MemberDto.class,
                    member.userName,
                    member.age))
            .from(member)
            .fetch();

    //then
    for (MemberDto memberDto : result) {
        System.out.println("memberDto = " + memberDto);
    }
}