Projection
1 프로젝션
- 프로젝션: select 대상을 지정하는 것
1.1 프로젝션 대상이 하나
- 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있음
- 프로젝션 대상이 둘 이상이면 튜플이나 DTO로 조회
List<String> result = queryFactory
.select(member.username)
.from(member)
.fetch();
1.2 프로젝션 대상이 둘 이상
- 튜플로 조회하거나 DTO로 조회하는 방법이 있다
2 튜플 조회
- 프로젝션 대상이 둘 이상일 때 사용
- 튜플은 리포지토리 계층에서만 쓰길 권장한다
- 서비스나 컨트롤러 계층까지 넘기지 말자
- 하부 구현 기술을 밖으로 드러내지 말자
- 따라서 나갈 떄 DTO로 변환해서 내보내자
List<Tuple> result = queryFactory
.select(member.username, member.age)
.from(member)
.fetch();
for (Tuple tuple : result) {
String username = tuple.get(member.username);
Integer age = tuple.get(member.age);
System.out.println("username=" + username);
System.out.println("age=" + age);
}