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

Hwanse님의 프로필 이미지
Hwanse

작성한 질문수

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

즉시 로딩과 지연 로딩

Fetch join 질문입니다.

해결된 질문

작성

·

226

0

안녕하세요 영한님, 항상 좋은 강의 감사드립니다.

지금까지 쭉 수강해오면서 오늘 처음으로 질문을 남깁니다.

강의에서 말씀해주신대로 @ManyToOne 또는 @OneToOne은 Eager가 default 이기때문에 N+1 문제 또는 테이블이 여러개 일 경우에 join이 걸려 굉장히 문제가 될 수 있는 쿼리를 만들어 낼 수 있기 때문에  다대일, 일대일 관계들은 Lazy로 놓는 것은 이해가 되었습니다.

그럼 실무에서는 MyBatis를 사용하여 SQL을 매핑하던 것처럼  DB의 관점으로 개발하던 방식과 유사하게

상황과 필요에 따라서 향후 fetch join 또는 엔티티 그래프 라는 기능들을 활용하여 개발하는 것인가요 ?

답변 1

1

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

안녕하세요. 환석님^^

맞습니다. 기본적으로는 모든 설정을 LAZY로 잡고, 필요한 상황에 따라서 fetch join이나 엔티티 그래프를 사용합니다.

그런데 상황에 따라서 fetch join이 꼭 필요하지 않을 수도 있고, 더 나아가서 hibernate가 추가적으로 공통 최적화 기능도 제공합니다.

그리고 실무에서는 때에 따라서 엔티티로 조회하기 보다는 바로 DTO로 조회하는 것이 더 나은 경우도 있습니다.

관련해서 실무에서 어떻게 최적화 하는지 더 자세한 내용은 활용2편 - API개발과 성능최적화 강의를 참고해주세요^^

감사합니다.

Hwanse님의 프로필 이미지
Hwanse

작성한 질문수

질문하기