inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

엔티티 클래스 개발2

계층구조 카테고리 하위 속한 모든 아이템 조회

해결된 질문

3839

asdkfur

작성한 질문수 22

1

안녕하세요.항상 모든 질문에 정성스럽게 답변하시느라 고생이 많으십니다. 그래서 질문하는게 조심스럽지만 제가 못보는 부분이 있을가 걱정되 또 질문을 하게 되네요 ㅎㅎ

혹시 만약 이 강의에서 처럼 Category 가 계층 구조로 되어있으나 Item과 일대다 구조되어있을때 특정 category 하위에 카테고리에 속한 모든 item 을 찾을때 어떤방식으로 많이 구현하시나요?

제가 생각한 방법은

서비스 레이어에서 카테고리 리파지토리를 통해 특정 category엔티티를 찾아온다.loop를 돌면서 child를 모두 로딩시키 면서 child id 를 리스트로 만든다 ->  아이템 리파지토리의findByCategoryIds와같은 메서드로 해당 id에 속한 모든 item를 찾는다.

조금더 깔끔한 방법은 없을까요 ? 양방향 관계를 줄이는게 좋지만 이상황에서는 양방향 관계를 걸어서 Category에서 one to Many로 item을 가지고 있다가 그 리스트를 로딩후 반환하는게 나을까요?

항상 정말 좋은 강의와 꼼꼼한 답변 감사하게 생각하고 있습니다.

spring-boot java 웹앱 JPA spring

답변 4

4

김영한

안녕하세요. asdkfur님^^

(저의 노고를 알아주시니 감사합니다 ㅋㅋ)

카테고리 설계와 최적화는 생각보다 깊이가 있고, 다양한 방법이 존재하고, 내용도 방대해서 한번 찾아서 공부해보시길 권장합니다.

구글에 "db 계층 카테고리 설계" 검색하면 정말 다양한 내용을 찾을 수 있습니다.

DB 설계와는 별도로 제가 개인적으로 선호하는 방식은 카테고리는 자주 변하는 항목이 아니도 데이터도 많지 않기 때문에, 애플리케이션 로딩 시점에 몽땅 메모리에 캐시합니다.

그러면 루프를 돌던 뭘 하던 결국 메모리에서 동작하기 때문에 매우 빠른 속도로 원하는 결과를 얻을 수 있습니다.

감사합니다^^

1

asdkfur

감사합니다. ㅎㅎ

1

김영한

질문의 핵심이 category 최적화라기 보다는, 이런경우 양방향 연관관계를 통해서 로딩하는 것이 좋은지, 아니면 쿼리를 2번 분리해서라도 단방향 연관관계로 푸는게 좋은지 이군요^^

지금 찾으려는 엔티티가 Item이고, 사실 Category는 Item을 찾는 검색 조건을 뿐입니다. 이런 경우 쿼리를 2번 분리하더라도 단방향 연관관계로 푸는게 더 좋습니다.

감사합니다.

0

asdkfur

안녕하세요 선생님 답변 다시 한버더 감사드립니다.

나름 선생님의 수고를 조금이나마 덜어 드리고자  (도움이 될지는 모르겠지만 ㅎㅎ) 질문하기전 중복된 질문이 있어나 찾아보고 인터넷도 뒤져보고 하지만 그래도 부족하네요 ㅎㅎ

제 질문의 요점은 특정 category에 속한 모든 아이템들을 찾는다면 이때 과연 category에서 양방향 관계로 아이템들을 가지고 있다가 리턴하는게 나은지 (양방향을 최대한 안쓰는게 좋지만)아님 특정 category를 부모로 가진 모든 cateogry 아이디를 찾아 그 값으로 다시 아이템을 조회하는게 바람직한지인데 

선생님은 주로 메모리에 모든 category 를 캐쉬 하셔서 사용하신다면 후자 즉  두번 조회하는 방식을 선호하신다는 말로 이해해도 될까요?

sdk 설정 오류

0

43

2

오탈자 - @Transactional

0

52

1

src/test/resources 테스트 경로 문제

0

49

1

상품 등록후 H2 db 출력 순서 바꿀 수 있나요?

0

62

1

MemberRepositoryTest 실행오류

0

73

1

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

1

181

2

강의 마지막 QueryDSL 사용 부분 질문있습니다

1

135

2

클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.

0

50

1

도메인 모델 패턴 vs 트랜잭션 스크립트 패턴

0

71

1

기본 생성자

0

59

1

h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.

0

100

1

멤버서비스테스트 부분에서 막힙니다.

0

163

4

실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?

0

115

1

초반에 h2 다운로드 과정 꼭 필요한가요?

0

117

2

자신 필드에도 get으로 접근하는 이유가 있을까요?

0

108

1

24분 27초 연관관계 편의 메서드 위치

0

112

1

단건 주문만 가능하게 한건 의도한 부분이신가요?

0

106

2

빌드 툴, Gradle

0

57

1

h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다

0

73

2

Repository에서 EntityManager 주입 방식 차이

0

87

1

롬복과 사용자 정의 setter 메서드

0

70

1

주문 목록 조회 fetch join 질문드립니다

0

79

1

dirty checking 질문드립니다.

0

78

1

동시성 관련 질문입니다

0

71

1