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.