inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

주문 조회 V3.1: 엔티티를 DTO로 변환 - 페이징과 한계 돌파

컬렉션의 필요성에 대해 질문 좀 드리겠습니다

517

dionisos198

작성한 질문수 42

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예

[질문 내용]
먼저 다 대 다 관계라고 하겠습니다.

A라는 엔티티와 B라는 엔티티가 다대다로 묶여져 있고 그 중간테이블을 C라고 하겠습니다.

이럴 경우에 걍 컬렉션 배치size으로 하는게 아니라 중간 테이블 B로 하면 안되나요?

요약하면 강의에서는 페이징이 필요하지 않으면 join fetch로 페이징이 필요하다면 batch size를 활용하라 라고 되어있는데 역으로 @ManyToOne이 있는 다대 일의 다 쪽에서 jon fetch로 모든 것을 해결하면 안되는 건가요??

 

 

아 그리고 질문이 또 있는데 위에서 B에서 A와 C를 fetch join으로 모두 가져오게 설계해도 괜찮죠??

 

 

java spring spring-boot jpa

답변 2

1

김영한

안녕하세요. dionisos198님

생각하신 내용이 맞습니다. 중간 테이블을 중심으로 조회가 가능하다면 크게 문제가 없습니다. 하지만 때때로 중간 테이블을 중심으로 조회하기 어려운 경우들도 있습니다.

추가로 질문 주신 부분은 fetch join은 다대일 관계는 무제한으로 가능하고 일대다 관계는 하나 까지만 가능합니다. 대신 이 경우 강의에서 설명하는 것 처럼 페이징 부분을 고려해야 합니다.

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

A와 B가 다대다 관계이고 중간 테이블이 C라고 하셨습니다. 그리고 B에서 A와 C를 가져오는 fetch join으로 모두 가져오는 것이 가능한지에 대한 질문이시죠.

일반적으로 다대다 관계에서는 컬렉션으로 연결해주는 것이 좋습니다. 중간 테이블을 직접 사용하는 것보다는 객체지향적인 접근 방식으로 컬렉션을 사용하면 코드의 가독성, 유지 보수성 등 여러 가지 측면에서 더 좋은 성능을 얻을 수 있습니다.

따라서, B에서 A와 C를 fetch join으로 모두 가져오는 것은 좋은 설계 방식이라고 볼 수 있습니다.

하지만, 각 상황에 따라 다를 수 있습니다. 예를 들어, 데이터 양이 많거나 특정 상황에서는 필요한 데이터만 가져와야 할 때 등에는 조인 보다는 다른 방법을 고려해야 할 수도 있습니다.

자세한 설명은 해당 강의의 내용과 관련된 질문이 아니기 때문에, 더 자세한 답변을 원하신다면 강의 Q&A나 관련된 포럼에 질문을 올려보시는 것이 좋을 것 같아요.

더 도움이 필요하시면 언제든지 물어보세요. 감사합니다.

강의 관련 외 질문입니다.

0

66

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

0

90

1

BeanCreationException

0

88

3

Update 후 UpdateMemberResponse 매핑할 때

0

47

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

99

2

페이징 + 검색조건 관련해서 질문드립니다.

0

70

1

Query Dsl Q파일 질문입니다.

0

82

1

루트 쿼리라는것은

0

58

1

메서드를 분리하는 기준

0

63

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

110

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

84

2

fetch join과 영속화와 OSIV의 관계

0

86

2

Distinct 사용 전 결과에 대한 의문

0

113

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

57

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

78

2

dto 필드 속 엔티티 여부

0

60

1

뷰템플릿 사용 시

0

76

2

Result 클래스 관련 질문

0

56

1

@PostConstruct 프록시 관련 질문드립니다

0

86

1

DTO 대신 Form 사용은 안되나요?

0

135

1

OSIV ON 상태일 때

0

96

1

fetch join VS fetch join 페이징 궁금증

0

180

2

양방향 연관관계 알아보는 법?

0

105

1

16강 17강 간단 정리 이게 맞을까요 ?

0

165

2