본문 바로가기

(JPA) 연관관계 설정시 주의 사항 fecth 설정

2022. 7. 16.

fetch 설정을 해줘야 한다.

@XToOne 은 default 전략으로 EAGER 를 사용한다.

 

EAGER를 사용할 경우 N + 1 문제가 발생할 수 있는데, N + 1 문제란 쿼리 실행시 연관관계 설정 된 다른 엔티티 정보를 가져오기 위해 하쿼리가 추가적으로 실행 되는 것이다.

 

Review entity의 Place entity 연관관계가 EAGER로 설정 되어 있다.

예를 들어 JPQL 사용시 "select r from Review r" 로 쿼리를 짰다면 "select * from Review" 로 인식이 되어 모든 Review가 조회가 되고 Review 안 EAGER 설정이 되어 있는 Place 정보들을 전부 가져오게 된다.

 

이 문제를 해결 하기 위해 Place의 fetch를 Lazy로 설정해 주고 JPQL로 조회 할때 페치조인을 이용해서 가져오면 문제를 해결 할 수 있다.

댓글