궁금 왜 리포지토리가 항상 집계에 사용되는 것으로 묘사되는지. 그것을 모든 단체에 동등하게 동기 부여하는 것이 아닌가?
집계는 응용 프로그램 계층에 노출되는 일관성 경계입니다.
즉, 리포지토리는 데이터 저장소에서 상태의 스냅 샷을 가져 와서 집계를 구성하는 엔티티와 값의 그래프를 작성해야합니다.
리포지토리의 API는 일관성 경계를 정의하기 때문에 집계 루트 만 노출합니다. 응용 프로그램이 그래프의 임의의 위치에 도달하여 변경하도록하는 대신 응용 프로그램이 루트 객체와 독점적으로 통신하도록합니다. 이 제한 조건을 적용하면 모든 변경 사항이 비즈니스 불변성을 충족시키는 지 확인하기 만하면됩니다.
따라서 응용 프로그램이 해당 미세 입자에서 모델과 직접 상호 작용할 수 없기 때문에 모델의 각 엔터티 유형에 대한 리포지토리를 개발할 필요가 없습니다.
다른 말로하면, 집합 내의 엔티티는 개인 데이터 구조입니다. 우리는 클라이언트가 api를 지나서 포인터를 직접 조작 할 수있는 목록을 구현하지 않는 것과 같은 이유로 엔티티를 직접 조작하도록 클라이언트 코드를 허용하지 않습니다. 저장소는 모델의 상태의 캐시 된 뷰를 검색 할 수 있습니다 -
cqrs에서는 골재 이외의 작업에 사용되는 "저장소"를 참조 할 . 트릭은보기가 수정을 지원하지 않는다는 것입니다. Evans가 설명하는 접근 방식에서 각 엔터티는 모든 역할을 수행하는 하나의 단일 표현을가집니다. CQRS에서 엔티티는 각 역할마다 서로 다른 표현을 가질 수 있지만 일반적으로 엔티티 수정을 지원하는 역할은 하나뿐입니다.
마지막 문장이 정확합니다. 나는이 책을 읽었고 하나의 엔티티가 자식이없는 집합 루트가 될 수 없으므로 리포지토리에 저장 될 수있는 유력한 후보자이기도합니다. –
모두 동의합니다. 엔티티에는 자체 수명주기 및 자체 ID가 있습니다. 그러므로, 그것은 검색되고 운영 될 수 있습니다. 이것을 보는 또 다른 방법은 저장소가 엔티티를 반환한다는 것입니다. 해당 엔티티는 다른 오브젝트를 수집 할 수도 있고 그렇지 않을 수도 있습니다. 저장소가 검색하는 내용 : 파란색 책에 내부 표지에 저장소가 엔터티 및/또는 AR을로드하는 이미지가 있음을 확신합니다. –