• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

DTO변환 Projections.bean 관련 질문입니다.

22.02.14 15:57 작성 조회수 176

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.
 
안녕하세요. JPA를 넘어 QueryDsl까지 잘 보고 배우고 있습니다.
QueryDsl을 사용한 DTO변환 1단계인 Projections.bean 을 사용중에 강의에서는 DTO 클래스의
Getter와 Setter를 이용하여 변환을 한다고 하셨었습니다.
영상에서는 getter와 setter가 포함되어있는 @Data 어노테이션을 사용하였었습니다.
 
그런데, 여러가지 실험 차원에서 @Data를 빼고도 잘 작동이 되어 그 이유가 궁금합니다
 

@NoArgsConstructor
public class MemberDto {

private String username;
private int age;

public MemberDto(String username, int age) {
this.username = username;
this.age = age;
}
}
 
/**
* DTO 조회하기 방법 1. QueryDsl : 프로퍼티 접근
* DTOGETTER, SETTER가 존재해야함.
*/
@Test
public void findDtoBySetter() {
List<MemberDto> result = queryFactory
.select(Projections.bean(MemberDto.class,
member.username,
member.age))
.from(member)
.fetch();
for (MemberDto memberDto : result) {
System.out.println("memberDto = " + memberDto);
}
}


결과->
/* select member1.username, member1.age from Member member1 */ select member0_.username as col_0_0_, member0_.age as col_1_0_ from member member0_ memberDto = study.querydsl.dto.MemberDto@35329a05 memberDto = study.querydsl.dto.MemberDto@36c783ca memberDto = study.querydsl.dto.MemberDto@17136390 memberDto = study.querydsl.dto.MemberDto@273293c8


답변 1

답변을 작성해보세요.

3

안녕하세요. develop님

이 부분은 저도 정확히 모르겠습니다.

혹시 아시는 분 있으면 답변 남겨주세요.

감사합니다.