✅ 프로젝션

List<Team> result = em.createQuery("select m.team from Member m"
, Team.class).getResultList();

//그런데 기본적으로 조인으로 명확하게 해라! (예측 위함)
List<Team> result = em.createQuery("select t from Member m join m.team t"
, Team.class).getResultList();

프로젝션으로 가져온 결과는 다 영속성 컨텍스트에서 관리됨!!

List<Member> result = em.createQuery("select m from Member m", Member.class)
	.getResultList();

반영됨
Member findMember = result.get(0);
findMember.setAge(20);

✅ 프로젝션 - 여러 값 조회

  1. Query 타입으로 조회
  2. Object[] 타입으로 조회
  3. new 명령어로 조회 • 단순 값을 DTO로 바로 조회 SELECT new jpabook.jpql.UserDTO(m.username, m.age) FROM Member m • 패키지 명을 포함한 전체 클래스 명 입력 • 순서와 타입이 일치하는 생성자 필요
List<MemberDTO> result = em.createQuery("select new jpql.MemberDTO(m.username, m.age)
	from Member m", MemberDTO.class).getResultList();