강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

sweet3525님의 프로필 이미지
sweet3525

작성한 질문수

실전! Querydsl

lazy loading 할 때 where 절 추가 관련 질문드립니다.

작성

·

286

0

안녕하세요.

OneToMany 가 여러개 있는 entity 를 페이징으로 가져오려고 하는 상황에서 default_batch_fetch_size 를 100 이상으로 설정해서 in query 로 가져오게 구성해놓았습니다.

이 때 lazy loading 으로 in query 호출 시 추가 where 조건을 넣어서 가져오고 싶은데요.

단 하나 가능한 케이스를 찾은건.. entity 클래스에 @Where 어노테이션을 달아서 처리하면 lazy loading in query 와 함께 명시한 where 절이 호출되는건 확인했습니다만,

이렇게 설정하면 관련된 모든 쿼리의 where 절에 추가될 수 있어서.. 특정 querydsl 로 호출 시에만 lazy loading 호출 시 where 조건을 추가하고싶습니다.

많이 검색해보면서 삽질해봤는데.. 딱히 방법이 보이지 않는 것 같은데요 ㅠㅠ

혹시 방법이 있을까요?

미리 감사합니다

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. sweet3525님

지연로딩은 엔티티의 객체 그래프를 모두 유지해야 하기 때문에 모든 데이터를 다 조회해야 합니다.

결국 lazy loading 시에만 원하는 where 조건을 별도로 추가하는 기능은 없습니다.

(혹시 있을 수 있다고 해도 앞서 말씀드린 내용 때문에 맞지 않습니다.)

이 경우 처음부터 DTO로 조회하거나, DTO로 조립하는 것을 추천합니다.

관련해서 활용2편을 끝까지 따라 공부해보시면 어떻게 활용해야 할지 이해가 되실거에요.

감사합니다.

sweet3525님의 프로필 이미지
sweet3525

작성한 질문수

질문하기