강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của zpzp6272746
zpzp6272746

câu hỏi đã được viết

Thực hành! Dữ liệu Spring JPA

@EntityGraph

EntityGraph

Viết

·

470

0

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

Câu trả lời 2

1

yh님의 프로필 이미지
yh
Người chia sẻ kiến thức

안녕하세요. H K님

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

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

감사합니다.

H K님의 프로필 이미지
H K
Người đặt câu hỏi

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

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

0

1번은...

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

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

H K님의 프로필 이미지
H K
Người đặt câu hỏi

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

Hình ảnh hồ sơ của zpzp6272746
zpzp6272746

câu hỏi đã được viết

Đặt câu hỏi