작성
·
239
0
안녕하세요 영한님! 2.5단계 때문에 2월달은 온라인으로 진행되어서 3월달에나 볼 수 있겠네요 ㅜ.ㅜ
이번에 질문하려고 하는 것은 메서드명으로 쿼리를 만드는 단계에서 자동으로 모든 컬럼을 페치조인을 하는지 궁금해서 질문했습니다!
엔티티 내부에 LAZY로 걸어놓은 것과 상관없이 메서드명으로 쿼리가 만들어 질 때에 페치조인이 되는 것인가요??
프로젝트 진행 중에 findByTitle 이라는 메서드명으로 쿼리를 호출했을 때, select ... from 해당엔티티 where title= '타이틀명' 이 한 번 나가고 난 뒤에 여기에 lazy로 걸려있던 매핑 테이블들의 데이터에 select을 다 날리더라구요. 언뜻봐서는 n+1 인건가 싶었는데 findByTitle만 호출을 하고 lazy 걸려있는 것들을 뒤늦게 로딩시키지 않았으니 n+1은 아닌 것 같고 그렇다면 혹시 페치조인으로 되는건가 싶어서요!
특이점은 해당 엔티티와의 fk와는 상관없이 그 테이블의 모든 데이터를 다 끌고온다는 점입니다.
메서드이름으로 쿼리 생성이 페치조인을 이용하나요 ??
2월 한 달도 좋은 달 되시길 바랄게요~!
답변 3
1
1
안녕하세요. kangsy763님^^
처음 나간 쿼리가 전부입니다.
결국 페치조인이 아니라는 것이지요.
아마 엔티티 연관관계에 EAGER가 걸려있을거에요. 참고로 @XToOne은 기본이 EAGER입니다.
어서 코로나가 끝나면 좋겠네요 ㅎㅎ 그동안 열심히 학습하세요^^!
0