String
, List<String>
@Test
public void simpleProjection() {
List<String> result = queryFactory
.select(member.username)
.from(member)
.fetch();
for (String s : result) {
System.out.println("s = " + s);
}
}
@Test
public void tupleProjection() {
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 + " age=" + age);
}
}
둘 이상의 대상
Tuple은 보면 package가 querydsl에 속해 있다. repository 내부에서 사용하는 것이 좋고 서비스 계층 이나 컨트롤러 앞으로 나오는 것은 좋지 않다.
앞단 에서는 뒷 쪽에서 어떤 기술을 사용하는지 알면 좋지 않다. 의존성이 없게 하는 것이다. 그러면 나중에 기술을 변경할 때 쉽게 된다.
Tuple도 바깥쪽으로 전달할 때는 DTO로 변환해서 보내는 것을 권장하신다.