Используя шаблон сопоставления данных, должны ли сущности (доменные объекты) знать о сопоставителе?

Я работаю с Doctrine2 впервые, но я думаю, что этот вопрос достаточно общий, чтобы не зависеть от конкретного ORM.

Должны ли сущности в шаблоне Data Mapper знать - ииспользование - Картограф?

У меня есть несколько конкретных примеров, но все они, кажется, сводятся к одному и тому же общему вопросу.

Если я имею дело с данными из внешнего источника - например,User имеет многоMessages - а внешний источник просто предоставляет последние несколько объектов (например, RSS-канал), как можно$user->addMessage($message) проверять наличие дубликатов, если он либо не знает о Mapper, либо не «ищет» в коллекции (кажется, что это неэффективно).

Конечно, контроллер или сценарий транзакции могут проверять наличие дубликатов перед добавлением сообщения пользователю - но это не совсем правильно и может привести к дублированию кода.

Если у меня есть большая коллекция - сноваUser со многимиMessages - как можноUser Сущность обеспечивает ограничение и разбиение на страницы для коллекции без фактической передачи вызова Mapper?

Опять же, Контроллер или Сценарий транзакции или любой другой объект, который использует сущность, может использовать Mapper напрямую для получения коллекцииUser«sMessages ограничено количеством, диапазоном дат или другими факторами - но это также приведет к дублированию кода.

Является ли ответ с использованием репозиториев и информирование об этом организации? (По крайней мере, для Doctrine2 и любой аналогичной концепции, используемой другими ORM.) В этот момент сущность все еще относительно отделена от Mapper.

Ответы на вопрос(3)

Ваш ответ на вопрос