Eso requeriría una respuesta bastante larga. En lugar de repetir lo que otros han dicho mejor y con más detalle antes que yo, lo conecto con algunas páginas relevantes. Sugiero mirar a través de ellos. Tal vez siga algunos enlaces adicionales. Wikipedia siempre es un buen comienzo. Si aún tiene alguna pregunta sobre uno u otro patrón después de revisar los enlaces, puede volver al SO y preguntar nuevamente. Pero si lo hace, trate de reducirlo. Es mejor hacer preguntas múltiples y enfocarse en aspectos particulares que esperar que la gente escriba un ensayo para ti.
Object Relational Mapper
Object-Relational Mapping (ORM, O/RM, y O/mapeo R) en el software de ordenador es una técnica de programación para la conversión de datos entre sistemas de tipo incompatibles en bases de datos relacionales y a objetos lenguajes de programación orientados.
Data Access Object
utilizar un objeto de acceso a datos (DAO) para abstraer y encapsular todos los accesos a la fuente de datos. El DAO gestiona la conexión con la fuente de datos para obtener y almacenar datos.
DataMapper
Una capa de mapeadores (473) que se mueve de datos entre los objetos y una base de datos mientras que los mantiene independiente el uno del otro y el propio asignador.
Active Record
Un objeto que envuelve una fila de una tabla de base de datos o vista, encapsula el acceso a la base de datos, y añade la lógica de dominio en esos datos.
Table Data Gateway
un objeto que actúa como una puerta de enlace (466) a una tabla de base de datos. Una instancia maneja todas las filas en la tabla.
Me siento como Table Data Gateway y DataMapper son en gran medida el mismo patrón. Ambos mantienen los objetos de dominio separados de las consultas, y ambos necesitan una forma de asignar los datos de un objeto a la base de datos. La única diferencia que veo es que Table Data Gateway requiere que inyecte explícitamente cada campo, mientras que DataMapper puede aceptar un objeto y maneja la asignación por sí mismo. ¿Es eso correcto? – AgmLauncher
@AgmLauncher No. TableDataGateways maneja filas, no objetos de dominio.Es decir, TableDataGateways devuelve una representación 1: 1 del registro en la base de datos. Es solo cuando comienza a asignar estos a un objeto de dominio estructurado independientemente que obtiene un DataMapper. – Gordon
Veo, entonces no son patrones mutuamente excluyentes, el TDG parece tener un nivel ligeramente más bajo que un DM, y un DM puede usar uno (¿o muchos?) TDG si así lo desea. ¿Es eso correcto? – AgmLauncher