개요
- 데이터베이스에서 조회(SELECT) 하는 3가지의 방법
- 설렉션(Selection) - 행 단위로 원하는 데이터를 조회하는 방식
- 프로젝션(Projection) - 열 단위로 원하는 데이터를 조회하는 방식
- 조인(Join) - 두 개 이상의 테이블을 양옆에 연결하여 데이터를 조회하는 방식
- 즉, 프로젝션은 SELECT 를 통해 조회할 대상을 지정하는 것을 뜻한다.
프로젝션 대상이 하나
@Test
void simpleProjection() {
//given
//when
List<String> result = jpaQueryFactory
.select(member.userName)
.from(member)
.fetch();
//then
for (String userName : result) {
System.out.println("userName = " + userName);
}
}
- 프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있음
- 프로젝션 대상이 둘 이상이면 Tuple 이나 DTO 로 조회
프로젝션 대상이 둘 이상일 때 사용 (튜플 조회)
@Test
void tupleProjection() {
//given
//when
List<Tuple> result = jpaQueryFactory
.select(member.userName, member.age)
.from(member)
.fetch();
//then
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);
}
}
com.querydsl.core.Tuple
- 프로젝션 대상이 둘 이상일 때 사용
- Tuple 은 가급적 Repository 안에서만 사용하는 것을 권장한다.