동일한 목표를 가진 것처럼 보이는 두 패턴을 발견했습니다. 차이점은 무엇입니까? http://martinfowler.com/eaaCatalog/repository.html데이터 매퍼 패턴은 리포지토리 패턴과 어떻게 다릅니 까?
답변
질의 구조 코드 농축 매핑 층 위에 다른 층 추상화 [리포지토리이다]
.
DataMapper
는 비즈니스 로직의 특성과에 대해 알 필요가 없다 울타리의 DB 측을 보장 데이터는 비즈니스 오브젝트에 의해 메모리에 보관하고 울타리의 비즈니스 측면하지 않는 방법 데이터가 저장되는 방법을 알아야합니다.
설명하기 위해 데이터가 행 집합으로 DB에 저장되어 있다고 가정합니다. 예를 들어 각 행은 상점의 항목을 나타냅니다. 메모리 측면에서는 해당 정보를 StoreItem
의 목록으로 보관하지 않고 재고가있는 품목과 재고가없는 품목을위한 두 개의 목록으로 유지하고자 할 수 있습니다. 하나의 목록과 두 개의 목록 간의 전환을 처리하는 것은 DataMapper
의 작업입니다.
울타리의 비즈니스 측면에서 다른 개체 및 상속 목록을 추가하여 복잡한 작업을 수행 할 수 있습니다. 'DataMapper'는 해당 표현을 관계형 DB로 변환해야합니다.
'저장소'는 비즈니스 측면에 "SELECT * FROM table WHERE 조건"기능을 제공합니다. 필터를 제공하면 해당 필터와 일치하는 개체 컬렉션이 반환됩니다.
요약하면 'DataMapper'는 단일 개체를 다루며 '저장소'는 개체 컬렉션을 다루며 'DataMapper'에서 제공하는 기능을 확장합니다.
좋은 설명, 어떻게 다를 수 있는지 보여줄 수 있습니까? Java, .NET 및 PHP 프레임 워크에서 볼 수 있듯이이 두 개념은 서로 혼용되어 사용되는 것처럼 보이며 매우 혼란 스럽습니다. –
@LordYggdrasill 특정 프레임 워크에 특정 문제가있는 경우이 사이트의 질문 형식으로 제시해야합니다. 쿼리 및 매핑은 논리적으로 다른 작업이지만 구현 *은 종종 긴밀하게 결합되어 일부 (인용 필요)가 함께 고려하도록 선택할 수있는 이유를 설명 할 수 있습니다. – Andrei
여기 ASP.NET 웹 사이트의 예제가 있습니다. 보시다시피, 리포지토리 패턴 구현은 POEAA의 Martin Fowler의 Data Mapper와 똑같습니다. 이 현상을 설명하는 방법을 알고 있습니까? 어쩌면 ASP.NET의 저장소가 실제로 데이터 매퍼입니까? http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns- in-an-asp-net-mvc-application –
- 1. 데이터 매퍼 디자인 패턴과 다 대다 관계
- 2. const 캐스트는 어떻게 다릅니 까?
- 3. memory_order_seq_cst와 memory_order_acq_rel은 어떻게 다릅니 까?
- 4. OData를 리포지토리 패턴과 함께 사용
- 5. 스트리밍 운영자는 지연된 실행과 어떻게 다릅니 까?
- 6. 리포지토리 패턴과 팩토리 패턴의 차이점
- 7. 어떻게 동일한 방법으로 실행 시간이 다릅니 까?
- 8. MATLAB 함수의 플롯과 선은 어떻게 다릅니 까?
- 9. F1은 메가 스토어와 어떻게 다릅니 까?
- 10. 애자일 연습에서 스크럼 연습은 어떻게 다릅니 까?
- 11. 무스에서 역할과 형질은 어떻게 다릅니 까?
- 12. IDF는 여러 문서에서 어떻게 다릅니 까?
- 13. nodejs는 libevent를 실행하는 것과 어떻게 다릅니 까?
- 14. GCC : 3 월은 mtune과 어떻게 다릅니 까?
- 15. 원시 재귀는 "정상"재귀와 어떻게 다릅니 까?
- 16. WCF의 MSMQ 바인딩은 WsHttp와 어떻게 다릅니 까?
- 17. 디버그에서 프로젝트 빌드는 릴리스와 어떻게 다릅니 까?
- 18. Windows와 Mac OS간에 subprocess.Popen은 어떻게 다릅니 까?
- 19. MPI에서 축소 및 스캔은 어떻게 다릅니 까?
- 20. Matplotlib베이스 맵의 마커 밝기는 어떻게 다릅니 까?
- 21. .Net의 MVVM은 Cocoa의 MVC와 어떻게 다릅니 까?
- 22. 스킴과 라켓이 다릅니 까? 그렇다면 어떻게?
- 23. VB6의 CDate는 VB.NET 버전과 어떻게 다릅니 까?
- 24. Android는 다른 Linux와 어떻게 다릅니 까?
- 25. "|| ="연산자는 CoffeeScript의 "? ="와 어떻게 다릅니 까?
- 26. 동적 배열은 정적 배열과 어떻게 다릅니 까?
- 27. wget과 Perl의 lwp는 어떻게 다릅니 까?
- 28. Qt Creator는 Eclipse CDT와 어떻게 다릅니 까?
- 29. 사설 ivars는 합성 ivars와 어떻게 다릅니 까?
- 30. BSD에서 nftw가 다릅니 까?
데이터 매퍼가 너무 커서 개체를 실제로 매핑하는 것보다 많은 양의 쿼리를 처리하는 경우 파트를 쿼리하는 데 집중할 수있는 또 다른 클래스를 소개합니다.이 클래스는 리포지토리 패턴으로 이름을 지정합니다. – Rockstart