inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

경로 표현식

JPA 관련 프로젝트를 하던 중 궁금한점 2가지가 있어 질문드립니다.

396

IW M

작성한 질문수 1

1

안녕하세요 영한님.
Spring 강의부터 JPA 강의까지 반복하고 있는 직장인입니다. 직장이 금융업종이라 단순 반복 업무 운영에 흥미를 잃어, 퇴근 후에 공부하고 있습니다.
JPA 관련 토이프로젝트를 하던 중 궁금한점이 있어 이렇게 질문드립니다. (토이프로젝트를 하다보니 영한님 강의의 많은 부분이 실제 적용되는 것을 알 수 있었습니다..^^)

1. Spring Data JPA 쿼리 메서드 관련

프로젝트에는 User, Role 테이블이 존재합니다. 관계는 다대다이지만, ManyToOne으로 각각 설계하였습니다.
여기서 특정 롤을 가지고 있지 않은 사용자이름(username)을 가져오는 쿼리를 작성하려고 하는데, 우선 JPQL로 적용해보면 아래와 같이 될 것입니다.
=> select distinct u from User u fetch join u.userRoles ur where ur.role not in ?1
그런데 영한님 강의에서도 fetch 조인 대상은 alias를 허용하지 않는다고 하셨고, 실제로 해보니 오류가 나더라고요..
근데 혹시나 해서.. Spring DataJPA 아래와 같은 쿼리 메서드를 적용해보니.. 원하는 결과를 얻을 수가 있었습니다..
=> Page<User> findDistinctUsernameByUserRolesRoleNotIn(@NotNull Pageable pageable, Collection<Role> roles);
이 경우 내부적으로 어떻게 동작한 것일까요..ㅠ?

2. 페이징 처리

위 쿼리를 페이징 처리하기 위해 BatchSize를 지정했는데요..
BatchSize와 @EntityGraph 를 같이 적용하니 동작하지 않더라고요..
제가 이해하기로는 @EntityGraph도 패치조인을 위한 전략이고, BatchSize도 패치조인 후에 페이징 범위를 가져오기 위한 방법인데, 왜 이렇게 되는지 잘 이해가 되지 않더라구요..
혹시 제가 잘 못 이해하고 있는게 있는 것일가요??
영한님 강의로 스프링에 대한 전반적 이해를 하는데 많은 도움을 얻고 있습니다. 감사합니다!

java JPA

답변 1

0

김영한

안녕하세요. IW M님

첫번째 질문은 다음을 참고해주세요.

https://www.inflearn.com/questions/15876

두번째 질문은 사실 쉬워보이지만 상당히 많은 설명이 필요합니다. 활용2편에서 이 부분을 매우 자세히 설명드립니다.

감사합니다.

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

55

2

inheritance startegy 선택시 고려사항

0

38

1

Entity 동등성 비교

0

40

1

실무 조언 관련 질문입니다.

0

65

1

H2데이터베이스 파일 생성

0

76

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

67

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

62

1

JPQL 메소드와 락

0

62

1

Delivery @OneToOne

0

70

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

104

2

UnsupportedOperationException 발생

0

97

3

H2 Database 연결이 안됩니다.

0

101

2

연관관계 매핑 질문드립니다.

0

94

2

h2데이터베이스 실행오류

0

114

2

persistence.xml

0

119

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

87

1

영속성 컨텍스트

0

74

1

JPA 프록시

0

105

1

Native Query와 MyBatis

0

81

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

97

1

임베디드 타입 예시 코드 관련 질문

0

125

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

101

3

인텔리제이 패키지 커서 단축키 질문

0

112

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

152

1