Pregunta

yo estaba mirando Mapeador de datos, que a primera vista parecía utilizar el patrón ActiveRecord ORM.Otras personas dijeron que utiliza el patrón DataMapper y/o Domain Object.

¿Cuál es la diferencia entre esos patrones?

¿Fue útil?

Solución

La principal diferencia entre los dos patrones es la siguiente:

  • En ActiveRecord tiene un objeto de dominio que conoce toda la lógica empresarial y cómo guardarse/actualizarse en la base de datos, user.getLinkToProfile() y User::find(1), User::save(user)

  • En el patrón DataMapper tiene un objeto de dominio que contiene toda la lógica de negocios, por ejemplo user.getLinkToProfile() (o algo similar) pero sabe nada sobre la base de datos en cuestión, además de esto tienes un objeto-mapeador que se encarga de guardar, actualizar, seleccionar, etc.objetos de usuario de la base de datos que tendrían UserMapper::find(1), UserMapper.save(user)

DataMapper es potencialmente más complejo que ActiveRecord, pero es mucho más fácil desarrollar su modelo de dominio y base de datos de forma asincrónica que con ActiveRecord.

Otros consejos

El registro activo es muy pesado, el asignador de datos y el objeto de dominio separan esas preocupaciones para que tenga un conjunto de código más definido que realiza varios aspectos para sus objetos de "dominio" o "entidad".

Personalmente prefiero, no es que usted haya preguntado, ir con la separación en objeto de dominio, mapeador de datos, probablemente usar un patrón de ensamblaje e incluso un patrón de transferencia de datos para asegurar una separación clara de lo que sucede con los datos entre la base de datos y los niveles superiores de una aplicación. .

...las separaciones elegantes y sencillas siempre ayudan.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top