격벽에 대한 내용을 코드로 표현 시 질문이 있습니다!
안녕하세요 유투브를 쭉 챙겨보다 강의를 내셔서 바로 달려온 구독자 중 한명입니다 !
다름이 아니라 섹션 2의 개념 정리에서 개념도의 격벽에 대한 내용을 코드로는 어떤식으로 표현되는지를 좀더 확실히 이해하고 싶어 질문드립니다.
현재 상품과 카테고리 테이블 구조는 N : N으로 되어있고 ProductCategory는 이 다대다 관계를 연결하는 매핑 테이블로 이해했습니다.
그렇다면 상품과 카테고리는 서로가 서로를 알지 못하는 격벽으로 나눠져있으며 모든건 이 매핑 테이블인 ProductCategory 로 이뤄지고
상품과 카테고리의 정보를 가져오기 위해서는 두 개념은 서로를 알지 못하니 ProductFinder 에서
ProductCategoryRepository 를 사용해 Category를 얻은 후 Product를 반환한다.
가 제가 이해한 격벽을 구현한 코드가 맞을까요 ?
또 이 격벽을 위한 코드에서 조인을 사용하지 않는 이유가 궁금했습니다.
RDBMS과 NoSQL의 차이점 하나가 JOIN으로 알고 있는데 JOIN을 사용하지 않고 개별적으로 접근한다는 점이 조금 새롭게 다가왔거든요.
기존에 다른 수강생 분들의 QA를 종합해서 정리했을 때는 다음과 같이 정리됐습니다.
무적의 한방 쿼리 사용을 지양 (쿼리가 점점더 비대해짐)
조인을 사용하지 않음으로써 다양한 조합(재사용)이 가능
복잡한 쿼리문을 들여다보지 않고 각 쿼리문들을 통해 로직의 흐름을 파악할 수 있다???
제가 이해한 내용이 맞을까요??
항상 잘 보고있습니다! 감사합니다!
답변 1
1
안녕하세요 질문 감사합니다!
모든건 이 매핑 테이블인
ProductCategory로 이뤄지고
이 부분이 격벽을 넘어서 참조하는 부분을 의미한 것이면 맞습니다!
다른 부분은 맞게 이해하신 것 같습니다! 핵심은 Product 가 Category 를 직접적으로 모르고 매핑을 통해서 격벽을 넘어간다라고 이해해주시면 될 것 같습니다!
전반적으로 잘 이해하신 것 같습니다, 당연히 Join은 필요 시 사용하면 됩니다!
다만 로직을 작성하고 테스트를 할때도 모든 것이 큰 쿼리 기반으로 동작하면 소프트웨어가 점점 쿼리(디비) 기반의 소프트웨어가 된다고 생각합니다.
저는 올바른 소프트웨어는 코드가 중심이 되고 쿼리는 데이터를 가져오는 전략 중 하나라고만 봐야한다고 생각합니다. 😃
이 관점에서 굳이 join 을 하지 않아도 충분한 경우라면 굳이 할 필요가 없다고 생각합니다
또한 Join 을 걸더라도 (어드민 코드 제외) 개념과 격벽의 기준을 적절히 판단하여 너무 큰 쿼리를 만들지 않는게 핵심이라고 봅니다!
모쪼록 완강까지 화이팅입니다! 완강 후 수강평도 기대하겠습니다!
추가 질문이 생기시면 편하게 질문주세요!
페이징 처리에서 offset/limit에 대한 질문
1
56
1
usecase 사용 기준
1
68
2
궁금한점이 여러개 생겼습니다.
1
83
1
다양한 관점의 코드 경험을 위해 개선하지 않은 코드
1
73
1
histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/
1
57
2
SettlementTargetRepository Jquery 질문
1
63
2
부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?
1
75
2
엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??
1
84
2
제미니님 안녕하세요!
1
90
2
개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조
1
96
2
프로덕트와 프로덕트카테고리 사이의 삭제 정책
1
90
2
새로 개발한다면 구현 순서
1
154
1
의존 방향에 대한 고민
1
137
2
어드민(Back-office)에서 예약 변경 시, '할인 조건 재검증(쿠폰 회수)' vs '기존 혜택 유지' 중 어떤 정책이 일반적인가요?
1
109
2
OrderKeyGenerator 인스턴스화 generate() 질문
1
92
1
외부 API 통합 시 데이터 제어 범위 설계 질문
1
107
1
PG 결제 승인 로직
1
149
2
QnA에서 Join 필드 표현법
1
105
1
결제서비스 콜백 동시성문제 가능성
1
121
2
굿
1
117
1
도메인/엔티티 분리 상황에서 쓰기 작업 하는 방법
1
143
2
도메인 객체와 엔티티 객체 사용
1
151
2
CouponService 의존성 의문
1
109
2
상품 목록 조회 고도화 질문
1
120
2





