작성
·
384
·
수정됨
0
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
List<Member> result = em.createQuery("select m from Member as m",Member.class) .getResultList();
위 내용을 설명하시면서 JPA는 절대 테이블 대상으로 쿼리를 짜지 않으며, 따라서 select m from Member as m의 Member는 객체이다. 라고 설명하셨는데 이해가 잘 안돼요...
from 뒤의 Member가 테이블의 Member가 아니라는 이야기겠죠? 그럼 @Entity로 관리되는 Member클래스를 말하나요?
테이블을 가리키는게 아니면 JPA는 어떻게 수많은 테이블중 Member테이블을 콕 찝어서 쿼리를 넘기나요? 엔티티명과 테이블명이 같아서,,,인가요?
근데 제 머리가 이해하기로는 form Member의 Member가 테이블명이여서, Member테이블의 모든내용을 가져와 m, 즉 Member객체에 집어넣는다고 이해가되거든요. 만약 저 Member가 엔티티객체라면... 엔티티객체엔 아무것도 없는데 거기다가 select m을 한다고해서 결과가 뜰수가 있는건가요...ㅜㅜ
답변 1
1
안녕하세요, 최서현 님! 공식 서포터즈 codesweaver 입니다.
1 네, 테이블의 Member가 아닌 엔티티 Member를 의미합니다.
2 우리가 Member 클래스에 @Entity 설정을 해주었지요? 이처럼 JPA는 엔티티로 분류된 객체를 기준으로 동작합니다. 객체 Member를 보면 어떤 테이블과 매핑되고 있을지를 알 수 있지요.
3 JPA는 JPQL을 해석하여 실제 데이터베이스에 쿼리를 날리게 되고(어떻게 테이블 정보를 알아내는지는 2의 답변과 동일합니다) 그 결과를 엔티티로 만들어 반환합니다.
감사합니다.
감사합니다!