이 기술은 약간 도움이 될 때가 있다.

엔티티 대신에 DTO편리하게 조회할 때 사용

회원 이름만 조회하고 싶을 때

<aside> 💡 프로젝션은 쉽게 말하자면 쿼리를 셀렉트에 들어가는 필드

</aside>

실습

public interface UserNameOnly {
	String getUsername();
}
@Test
public void projections() {
	Team teamA = new Team("teamA");
	em.persist(teamA);

	Member m1 = new Member("m1", 10, teamA);
	Member m2 = new Member("m2", 20, teamA);
	em.persist(m1);
	em.persist(m2);

	em.flush();
	em.clear();

	List<UserNameOnly> result = memberRepository.findProjectionByUsername("m1");
	assertThat(result.get(0).getUsername()).isEqualTo("m1");
}

Open projection

public interface UserNameOnly {

	@Value("#{target.username + ' ' + target.age }")
	String getUsername();
}