inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

@EntityGraph

findAll() 여러개 정의하기

해결된 질문

372

이동원

작성한 질문수 2

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예

[질문 내용]

만약 어떤 경우엔 @EntityGraph를 쓰고 어떤 경우엔 안쓰고 싶어서 원본 findAll()를 그대로 두고 새로운 findAll()과 같은 동작을 하는 메소드를 정의한다고 하면 어떻게 만들수 있나요?

 

java spring spring-boot jpa

답변 2

1

김영한

안녕하세요. 이동원님

별도의 메서드를 만드셔야 합니다.

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

이동원님의 질문에 대해 답변 드리겠습니다.

JPA에서 제공하는 기본 메소드 findAll()을 오버로드하여 다양한 버전을 사용하고 싶으시다면,
여러 방법이 있지만 Repository 인터페이스에 새로운 메소드를 정의하여 구현할 수 있습니다.

예를 들어, @EntityGraph 기능을 사용하지 않는 기본 findAll() 메소드가 이미 있고,
추가로 @EntityGraph를 사용하는 findAll() 메소드를 정의하고자 한다면,
메소드 이름을 달리하여 새로 정의할 수 있습니다.

public interface YourEntityRepository extends JpaRepository<YourEntity, Long> {
    
    // 기본적인 findAll()
    List<YourEntity> findAll();
    
    // @EntityGraph를 사용하는 findAll()
    @EntityGraph(attributePaths = {"연관된_속성명"})
    List<YourEntity> findAllWithEntityGraph();
}

이렇게 하면, @EntityGraph를 적용하고 싶을 때는 findAllWithEntityGraph()를 호출하고,
그렇지 않을 때는 기본 findAll() 메소드를 호출하여 사용할 수 있습니다.

같은 동작을 하는 메소드라 하더라도, 메소드 시그니처(메소드 이름, 파라미터 목록)가 달라야 하므로,
명시적으로 다른 이름을 부여하여 구분하면 됩니다.

이와 같은 방식으로 요구하시는 동작을 충족하는 메소드를 추가로 정의할 수 있습니다.

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

69

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

107

3

MemberRepository 구현체

0

57

1

pdf 표현 질문드립니다.

0

62

1

로그가 남지 않는 문제.

0

81

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

70

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

72

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

91

2

Sort 인터페이스는 잘 사용 안하나요?

0

52

1

스캔대상 질문드립니다.

0

46

1

하이버네이트6에서의 최적화에 이은 질문

0

85

1

save() vs saveAndFlush DB 통신 횟수

0

53

1

순수 JPA 리포지토리 코드 수정부분

0

86

2

bulk연산 후 flush하는 이유를 모르겠어요

0

152

3

bulk insert 질문입니다.

0

178

2

교만했던 것 같아요.

0

147

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

147

2

동적 테이블에 대한 질문

0

86

1

영속성 전이와 연관관계

0

130

2

강의 10:25 질문

0

74

1

단건 update 질문

0

95

2

엔티티 와 도메인의 경계

0

127

1

UsernameOnlyDto 타입 type mismatch 오류

0

119

1

Projection 개념과 데이터 전달과정에 대해 질문 있습니다.

0

136

1