Usando o Padrão do Mapeador de Dados, as Entidades (Objetos de Domínio) devem conhecer o Mapeador?

Estou trabalhando com o Doctrine2 pela primeira vez, mas acho que essa pergunta é genérica o suficiente para não depender de um ORM específico.

As entidades em um padrão do Mapeador de Dados devem estar cientes - eusar - o mapeador?

Tenho alguns exemplos específicos, mas todos parecem resumir-se à mesma pergunta geral.

Se eu estiver lidando com dados de uma fonte externa - por exemplo, umUser tem muitosMessages - e a fonte externa simplesmente fornece as últimas entidades (como um feed RSS), como pode$user->addMessage($message) verifique se há duplicatas, a menos que esteja ciente do Mapper ou "procure" na coleção (parece algo ineficiente a ser feito).

É claro que um Controller ou Transaction Script poderia procurar duplicatas antes de adicionar a mensagem ao usuário - mas isso não parece muito certo e levaria à duplicação de código.

Se eu tiver uma coleção grande - novamenteUser com muitosMessages - como podeUser entidade fornece limitação e paginação para a coleção sem realmente proxy uma chamada do Mapper?

Novamente, o Controller ou o Script de Transação ou o que estiver usando a Entidade pode usar o Mapeador diretamente para recuperar uma coleção doUseréMessages limitado por contagem, período ou outros fatores - mas isso também levaria à duplicação de código.

A resposta está usando Repositórios e tornando a Entidade ciente deles? (Pelo menos para o Doctrine2, e qualquer que seja o conceito análogo usado por outros ORMs.) Nesse ponto, a Entidade ainda está relativamente dissociada do Mapper.

questionAnswers(3)

yourAnswerToTheQuestion