DTO 조회하기 n+1오류
394
작성한 질문수 12
강의 내용은 간단하게 설명해주셧는데
1.OneToMany의 경우나 n+1문제가 발생할 경우는 어떻게 해결하나요?
2.강의에서는 join만 썻는데 fetch join은 불가능한가요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요. DTO 조회하기 n+1오류 관련해서 답변드릴게요.
- OneToMany 관계에서 n+1 문제가 발생할 경우 해결 방법은 다음과 같아요.
- Eager 로딩 사용: @OneToMany 어노테이션의 fetch 속성을 EAGER로 설정하면, 연관된 엔티티를 한 번에 조회할 수 있어요. 하지만, 성능상의 이슈가 발생할 수 있으므로 정확한 상황에 맞춰 사용해야 해요.
- Batch 크기 설정: hibernate.batch_size 프로퍼티를 설정하면, 지정한 갯수만큼의 엔티티를 한 번에 조회할 수 있어요. 이를 통해 n+1 문제를 해결할 수 있어요.
- FetchType.LAZY 사용: @OneToMany 어노테이션의 fetch 속성을 LAZY로 설정하면, 연관된 엔티티는 실제로 사용될 때 조회되어요. 이를 통해 불필요한 엔티티의 조회를 방지하고, n+1 문제를 해결할 수 있어요.
- 강의에서는 join만 사용한 이유는 fetch join은 사용하기 어려운 경우도 있기 때문이에요. fetch join은 연관된 엔티티를 한 번에 조회할 수 있어서 성능 상으로는 유리하지만, 데이터의 양이 많거나 조인된 엔티티가 큰 경우에는 부담이 될 수 있어요. 때문에 정확한 상황에 맞춰서 사용해야 하며, 성능 튜닝과 관련된 주제로 추후 따로 학습하시면 좋을 것 같아요.
더 자세한 내용이나 예제 코드가 필요하시다면, 개발관련 질문 게시판에 문의해주시면 자세하게 답변해드릴 수 있어요. 감사합니다!
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
70
1
existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?
0
107
3
MemberRepository 구현체
0
58
1
pdf 표현 질문드립니다.
0
62
1
로그가 남지 않는 문제.
0
81
1
테스트 라이브러리가 강의는 junit4가 맞나요??
0
70
2
pdf 파일과 차이점이 있는 것같은데 문제 없나요?
0
72
2
@PrePersist, @PreUpdate 호출 시점 질문드립니다.
0
91
2
Sort 인터페이스는 잘 사용 안하나요?
0
52
1
스캔대상 질문드립니다.
0
46
1
하이버네이트6에서의 최적화에 이은 질문
0
85
1
save() vs saveAndFlush DB 통신 횟수
0
54
1
순수 JPA 리포지토리 코드 수정부분
0
86
2
bulk연산 후 flush하는 이유를 모르겠어요
0
152
3
bulk insert 질문입니다.
0
178
2
교만했던 것 같아요.
0
147
1
RESTful 강의는 안하시는 건지 궁금합니다.
0
147
2
동적 테이블에 대한 질문
0
86
1
영속성 전이와 연관관계
0
130
2
강의 10:25 질문
0
74
1
단건 update 질문
0
95
2
엔티티 와 도메인의 경계
0
127
1
UsernameOnlyDto 타입 type mismatch 오류
0
119
1
Projection 개념과 데이터 전달과정에 대해 질문 있습니다.
0
136
1





