인프런 커뮤니티 질문&답변
EntityGraph
작성
·
464
0
안녕하세요 이해가 조금 안가는 부분이 있어서 글 질문드립니다.
17:53쯤 보시면
findAll() 메서드는 JpaRepository 인터페이스가 가지고 있는 메서드 입니다. 그런데
@Override @EntityGraph(attributePaths = {"team"}) List<Member> findAll();
이렇게만 적어 주셨는데 이게 왜 쿼리가 되는지가 신기합니다..
오버라이드 해서 따로 쿼리문을 적어주지 않으시고(쿼리를 재정의 하지 않으시고)
team 만 연관짓게 해주셨는데..
어떻게 Member 엔티티를 다 끌고 오는것인가요..
findBy... 이런 메소드 이름으로 가져오는 형태도 아닌데
이게 궁금합니다
두번째 질문입니다.
21:29 마지막 부분에서 Member.all 같은
@NamedEntityGraph 메서드는
@NamedQuery 와는 다르게 query="..." 를 직접 사용할수가 없더라구요.. (Member 엔티티에서) 그래서 findBy,.. 같은 이름으로 쿼리를 조회해 오는 (메서드 쿼리랑) 같이 조합해서쓸수밖에 없는거죠?
답변 2
1
김영한
지식공유자
안녕하세요. H K님
1번 질문은 hanul_kr님이 설명해주신 내용이 맞습니다. 기본 findAll() + 엔티티 그래프 기능이 적용됩니다.
2번 질문은 query를 직접 사용할 경우 엔티티그래프 대신에 fetch join을 직접 사용해주셔야 할거에요.
감사합니다.






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