Usando el patrón del mapeador de datos, ¿deberían las entidades (objetos de dominio) saber sobre el mapeador?

Estoy trabajando con Doctrine2 por primera vez, pero creo que esta pregunta es lo suficientemente genérica como para no depender de un ORM específico.

¿Deberían las entidades en un patrón de Data Mapper ser conscientes?utilizar - el mapeador?

Tengo algunos ejemplos específicos, pero todos parecen reducirse a la misma pregunta general.

Si estoy tratando con datos de una fuente externa, por ejemplo, unUser tiene muchosMessages - y la fuente externa simplemente proporciona las últimas entidades (como una fuente RSS), ¿cómo puede$user->addMessage($message) compruebe si hay duplicados a menos que sea consciente del Mapper o que "busque" en la colección (parece algo ineficiente).

Por supuesto, un controlador o secuencia de comandos de transacción podría verificar si hay duplicados antes de agregar el mensaje al usuario, pero eso no parece correcto y conduciría a la duplicación de código.

Si tengo una gran colección, de nuevo unUser con muchosMessages - ¿Cómo puede elUser Qué entidad proporciona limitación y paginación para la colección sin realmente enviar una llamada de Mapper?

Nuevamente, el Controlador o el Script de Transacción o lo que sea que esté usando la Entidad podría usar el Mapeador directamente para recuperar una colección deUser'sMessages limitado por conteo, rango de fechas u otros factores, pero eso también conduciría a la duplicación de código.

¿Es la respuesta usar repositorios y hacer que la entidad los conozca?? (Al menos para Doctrine2, y cualquier concepto análogo utilizado por otros ORM). En ese punto, la Entidad todavía está relativamente desacoplada del Mapper.

Respuestas a la pregunta(3)

Su respuesta a la pregunta