• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

테이블이 아닌 엔티티객체를 대상으로 쿼리한다<< 이해가 안돼요

23.01.31 17:48 작성 23.01.31 17:49 수정 조회수 336

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는 객체이다. 라고 설명하셨는데 이해가 잘 안돼요...

  1. from 뒤의 Member가 테이블의 Member가 아니라는 이야기겠죠? 그럼 @Entity로 관리되는 Member클래스를 말하나요?

     

  2. 테이블을 가리키는게 아니면 JPA는 어떻게 수많은 테이블중 Member테이블을 콕 찝어서 쿼리를 넘기나요? 엔티티명과 테이블명이 같아서,,,인가요?

     

  3. 근데 제 머리가 이해하기로는 form Member의 Member가 테이블명이여서, Member테이블의 모든내용을 가져와 m, 즉 Member객체에 집어넣는다고 이해가되거든요. 만약 저 Member가 엔티티객체라면... 엔티티객체엔 아무것도 없는데 거기다가 select m을 한다고해서 결과가 뜰수가 있는건가요...ㅜㅜ

답변 1

답변을 작성해보세요.

1

codesweaver님의 프로필

codesweaver

2023.02.01

안녕하세요, 최서현 님! 공식 서포터즈 codesweaver 입니다.

1 네, 테이블의 Member가 아닌 엔티티 Member를 의미합니다.

2 우리가 Member 클래스에 @Entity 설정을 해주었지요? 이처럼 JPA는 엔티티로 분류된 객체를 기준으로 동작합니다. 객체 Member를 보면 어떤 테이블과 매핑되고 있을지를 알 수 있지요.

3 JPA는 JPQL을 해석하여 실제 데이터베이스에 쿼리를 날리게 되고(어떻게 테이블 정보를 알아내는지는 2의 답변과 동일합니다) 그 결과를 엔티티로 만들어 반환합니다.

감사합니다.

최서현님의 프로필

최서현

질문자

2023.02.02

감사합니다!