강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

H K님의 프로필 이미지
H K

작성한 질문수

실전! 스프링 데이터 JPA

@EntityGraph

EntityGraph

작성

·

477

0

안녕하세요 이해가 조금 안가는 부분이 있어서 글 질문드립니다.
 
17:53쯤 보시면
findAll() 메서드는 JpaRepository 인터페이스가 가지고 있는 메서드 입니다. 그런데
 
@Override @EntityGraph(attributePaths = {"team"}) List<Member> findAll();
 
이렇게만 적어 주셨는데 이게 왜 쿼리가 되는지가 신기합니다..
 
오버라이드 해서 따로 쿼리문을 적어주지 않으시고(쿼리를 재정의 하지 않으시고)
team 만 연관짓게 해주셨는데..
어떻게 Member 엔티티를 다 끌고 오는것인가요..
findBy... 이런 메소드 이름으로 가져오는 형태도 아닌데
이게 궁금합니다
 
두번째 질문입니다.
21:29 마지막 부분에서 Member.all 같은
@NamedEntityGraph 메서드는
@NamedQuery 와는 다르게 query="..." 를 직접 사용할수가 없더라구요.. (Member 엔티티에서) 그래서 findBy,.. 같은 이름으로 쿼리를 조회해 오는 (메서드 쿼리랑) 같이 조합해서쓸수밖에 없는거죠?
 

퀴즈

Spring Data JPA에서 리포지토리 메소드의 이름만으로 쿼리를 생성할 때, 조건을 정의하는 부분의 시작을 나타내는 키워드는 무엇일까요?

Find

Get

By

Where

답변 2

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. H K님

1번 질문은 hanul_kr님이 설명해주신 내용이 맞습니다. 기본 findAll() + 엔티티 그래프 기능이 적용됩니다.

2번 질문은 query를 직접 사용할 경우 엔티티그래프 대신에 fetch join을 직접 사용해주셔야 할거에요.

감사합니다.

H K님의 프로필 이미지
H K
질문자

감사합니다 쿼리문을 따로 재정의 하지 않아도 

그냥 기본 findAll() + 엔티티 그래프 기능이 되게 JPA가 지원 해주는것이였네요

0

1번은...

MemberRepository.java는 JpaRepository<T, ID>를 확장합니다 (상속받습니다)
그렇게 그 부모인 PagingAndSortingRepository, CrudRepository 보시면 될것같습니다..

쿼리 메소드 기능 들어가기 직전의 <공통인터페이스 적용> 강의에 나옵니다

H K님의 프로필 이미지
H K
질문자

네 저의 질문은 공통인터페이스에 있는건데 그걸 오버라이딩 했는데 재정의로 쿼리를 따로 만들어 주지 않았는데도 잘되는게 신기해서 질문 드렸습니다..

H K님의 프로필 이미지
H K

작성한 질문수

질문하기