2016-09-16 2 views
1

저는 Seedstack 16.7과 JPA 플러그인을 지원하는 비즈니스 프레임 워크를 사용하고 있습니다.Seedstack의 저장소와 Finder의 차이점은 무엇입니까?

데이터 소스에서 데이터를 가져 오는 두 가지 방법이 있습니다.

  1. 저장소는 http://seedstack.org/docs/business/manual/repositories/

    • 그들은 꽤 많은 종류의 안전을 유지, JPA에 대한 기존의 EntityManager 대신에 역할을하는 사람입니다.
  2. 줍는은 http://seedstack.org/docs/business/manual/finders/

    • 그들은 데이터 소스에서 DTO를 검색 할 수 있습니다.

이들 사이의 유일한 명백한 차이 파인더는 데이터 소스와 인터페이스 읽기 전용이다.

파인더는 그들 사이의 실제 차이가 있는가, 또는 의도의 저장소를 호출하고, DTO

에 집계에서 변환하여 바로 수행 할 수 있습니다 요구하는 질의의 대부분은? 이 질문에 명시된 이외의 그 모델링 decission이 DDD, CQ (R) S, 빠른 readmodels, 최종 일관성의 깊은 이해에서 비롯 때문에

+0

저는 Seedstack 전문가는 아니지만, 이에 대한 정확한 대답은 링크 된 Finder 문서 페이지의 첫 번째 단락에있는 것 같습니다. CQRS 용어로 ReadModelFacade처럼 보입니다. – guillaume31

+0

공정하게 말하면, 설명서는 구별을 명확히하기 위해 최근에 업데이트되었습니다. –

답변

1

는 등, 몇 줄에 그것을 설명하기 위해 다소 복잡

  • 줍는

설명서에 "응용 프로그램의 인터페이스에 특정한 개체를 얻기 위해 지속성 계층이나 데이터 원본을 쿼리하십시오." 여기에 키워드는 인터페이스입니다. 그래픽 UI의 경우 파인더를 사용하면 구체적인보기를 검색하여 데스크톱 양식이나 웹 페이지에 표시 할 수 있습니다. CRUD가 아닌 앱에서는 UI가 이어야합니다.

  1. 조회수가 귀하의 법인 및 집계와 일치하지 않습니다.
  2. 귀하의 엔티티 및 집계하지 않습니다 (해야되지 않음) 포함 선택 데이터의 전체 목록은 즉 : 국가 및 도시 (고전 계단식 의존성 콤보)
  3. 귀하의 집계 및 엔티티 참조의 전체 목록을하지 포함 (안) 않습니다를 엔티티 (모든 Order 데이터가 들어있는 주문 클래스가있는 Customer 클래스는 잘못된 DDD 집계 모델링입니다.) 앱의 어딘가에 전체 주문 목록을 표시해야합니다.
  4. 조회 및 집계는 다른 데이터 소스에서 검색 할 수 있습니다 (일반적으로 쿼리 성능 및/또는 이벤트 일관성을 위해). 도메인 관계형 데이터베이스에서 NoSql readmodels, 정규화되지 않은 관계형 데이터베이스 또는 미리 계산 된 뷰 (엔티티를 나타내는 테이블 대신)를 사용합니다.

그래서 임피던스가 잘못되어 UI와 집계/엔터티가 잘못되었습니다. 이 문제를 해결하는 가장 좋은 방법은 명시 적으로 지속성을보기 위해 처리하는 방법을 만드는 것입니다. 파인더가 사용됩니다.

  • Repoisitories

때 사용자가 문제가 당신이 aggegate를 검색하고 행동의 진입 점으로 집계 루트를 사용할 필요가 도메인의 변화를 의미하는 명령. 이렇게하면 도메인의 일관성 및 불변성 (규칙)을 보장 할 수 있습니다. 집계 모델링에는 집계 및 엔티티를 사용하여보기에 좋지 않은 생각을하는 많은 뉘앙스 (here)가 있습니다. 따라서 데이터 소스에서 메모리 집계를 읽고 빌드하는 방법이 필요합니다. 이것은 저장소의 일입니다. 리포지토리는 엔티티 변경 추적, 고유 ID 생성 지속과 같은 뷰에 대한 데이터를 검색 할 때 필요하지 않은 추가 기능을 제공하기도합니다. 뷰를 처리 할 때이 기능은 필요하지 않습니다. 리포지토리가 재생됩니다.