[Spring Data JPA] 내부 프로젝션

Junseo Kim·2021년 8월 25일
0
post-thumbnail

Projection이란?

엔티티의 속성들이 너무 많을 때, 일부 데이터만 가져오는 방법이다.
자세한 내용 -> [JPA] Projection

내부 프로젝션 적용 안 됨

내가 리뷰 받은 리뷰 목록 조회 기능 구현시 Review 엔티티의 모든 필드가 필요하지 않았다. 또한 Review 엔티티와 연결되어 있는 2개의 Member 엔티티(student, teacher)도 Member 엔티티의 모든 필드가 필요하지 않았다.

따라서 아래와 같이 프로젝션을 적용했다.

그러나 실제 나가는 쿼리를 살펴보니, ReviewSummary는 프로젝션이 잘 적용되는데 Member 정보를 가져올 때, Id, name, imageUrl 뿐만 아니라 모든 필드를 다 가져왔다.

student 필드를 살펴보면, MemberSummary에는 존재하지 않는 createdAt, updatedAt, email, oauthId, role 필드까지 가져오는 것을 볼 수 있다.

spring-data-jpa에 issue로 올라온 내용이었다.

spring 진영에서는 이는 버그가 아니라고 하며 엔티티를 직접 만들지 않고는 JPA가 원하는 열을 정확히 선택하도록 설득하는 것은 기본적으로 불가능하다고 한다.

0개의 댓글