2014-02-12 3 views
0

CQRS를 수행하고 싶습니다. 검색어는 어디에 넣어야합니까? 현재 나는 두 가지 옵션을 생각할 수 있습니다 :CQRS에서 쿼리 레이어를 디자인하는 방법

1) 각 쿼리는 문자열을 포함하는 독립적 인 클래스 여야합니까? 이러한 객체는 간단한/멍청한 저장소에 전달되어야합니다.

이 접근 방식에서는 수천 개의 작은 쿼리/클래스가있을 수 있습니다. 또한 복잡한 쿼리에 문제가 있습니다 (예 : oracle에서 where in (...) 부분을 비울 수 없음). 따라서 해당 부분이 비어 있는지 확인하고 데이터베이스를 건드리지 않고 빈 컬렉션을 반환하기에 좋은 곳이 없습니다.

다른 데이터베이스

2) 작업시 하드 다른 쿼리를 사용하는 것이 CQRS 여전히 저장소 개체

쿼리 당 1 개 방법을 만들? 우리는 쉽게 쿼리를 선택하고 전달할 수있는 능력을 잃지 않습니까? 아니면 실제로 필요하지 않은가?

답변

1

여기 개념을 혼합 할 수 있습니다. CQRS only states에는 쿼리 및 명령을위한 별도의 모델이 있으며 이는 매우 광범위합니다.

예를 들어, 하나의 가능한 구현은 두 개의 별도 리포지토리를 가지고 있습니다. 하나는 쿼리 용이고 다른 하나는 명령 용입니다. 쿼리 저장소 구현은 데이터베이스를 사용할 수 있지만 명령 저장소 구현은 다른 데이터베이스를 사용할 수 있습니다. 아니.

리포지토리에 쿼리 클래스를 전달하는 대신 리포지토리가 여러 가지 다른 방법을 구현하는 것은 명령 쿼리 분리 문제가 아닌 (쿼리) 리포지토리를 구성하는 것입니다.

+0

질문에 ddd가 붙어있는 동안, 주요 초점은 "쿼리"의 내부에있는 것처럼 보입니다. 답을 조금 더 자세히 설명해 주시겠습니까? 당신은 "정리의 문제"라고 말하면서 그 질문이 원래 묻고있는 것이라고 생각합니다. – emragins

관련 문제