계층구조 카테고리 하위 속한 모든 아이템 조회
안녕하세요.항상 모든 질문에 정성스럽게 답변하시느라 고생이 많으십니다. 그래서 질문하는게 조심스럽지만 제가 못보는 부분이 있을가 걱정되 또 질문을 하게 되네요 ㅎㅎ
혹시 만약 이 강의에서 처럼 Category 가 계층 구조로 되어있으나 Item과 일대다 구조되어있을때 특정 category 하위에 카테고리에 속한 모든 item 을 찾을때 어떤방식으로 많이 구현하시나요?
제가 생각한 방법은
서비스 레이어에서 카테고리 리파지토리를 통해 특정 category엔티티를 찾아온다.loop를 돌면서 child를 모두 로딩시키 면서 child id 를 리스트로 만든다 -> 아이템 리파지토리의findByCategoryIds와같은 메서드로 해당 id에 속한 모든 item를 찾는다.
조금더 깔끔한 방법은 없을까요 ? 양방향 관계를 줄이는게 좋지만 이상황에서는 양방향 관계를 걸어서 Category에서 one to Many로 item을 가지고 있다가 그 리스트를 로딩후 반환하는게 나을까요?
항상 정말 좋은 강의와 꼼꼼한 답변 감사하게 생각하고 있습니다.
답변 4
4
안녕하세요. asdkfur님^^
(저의 노고를 알아주시니 감사합니다 ㅋㅋ)
카테고리 설계와 최적화는 생각보다 깊이가 있고, 다양한 방법이 존재하고, 내용도 방대해서 한번 찾아서 공부해보시길 권장합니다.
구글에 "db 계층 카테고리 설계" 검색하면 정말 다양한 내용을 찾을 수 있습니다.
DB 설계와는 별도로 제가 개인적으로 선호하는 방식은 카테고리는 자주 변하는 항목이 아니도 데이터도 많지 않기 때문에, 애플리케이션 로딩 시점에 몽땅 메모리에 캐시합니다.
그러면 루프를 돌던 뭘 하던 결국 메모리에서 동작하기 때문에 매우 빠른 속도로 원하는 결과를 얻을 수 있습니다.
감사합니다^^
1
질문의 핵심이 category 최적화라기 보다는, 이런경우 양방향 연관관계를 통해서 로딩하는 것이 좋은지, 아니면 쿼리를 2번 분리해서라도 단방향 연관관계로 푸는게 좋은지 이군요^^
지금 찾으려는 엔티티가 Item이고, 사실 Category는 Item을 찾는 검색 조건을 뿐입니다. 이런 경우 쿼리를 2번 분리하더라도 단방향 연관관계로 푸는게 더 좋습니다.
감사합니다.
0
안녕하세요 선생님 답변 다시 한버더 감사드립니다.
나름 선생님의 수고를 조금이나마 덜어 드리고자 (도움이 될지는 모르겠지만 ㅎㅎ) 질문하기전 중복된 질문이 있어나 찾아보고 인터넷도 뒤져보고 하지만 그래도 부족하네요 ㅎㅎ
제 질문의 요점은 특정 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





