인프런 커뮤니티 질문&답변
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을 직접 사용해주셔야 할거에요.
감사합니다.






감사합니다 쿼리문을 따로 재정의 하지 않아도
그냥 기본 findAll() + 엔티티 그래프 기능이 되게 JPA가 지원 해주는것이였네요