이 기술은 약간 도움이 될 때가 있다.
엔티티 대신에 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");
}
public interface UserNameOnly {
@Value("#{target.username + ' ' + target.age }")
String getUsername();
}