03-06-2008 Luis Artola
Table Data Gateway
Se encarga de generar todo el SQL para acceder a una sola tabla: select, insert, update y delete. También puede tener otros métodos para interactuar con la base de datos. En principio, no representa mayor lógica de negocio.
Row Data Gateway
Te permite disponer de un objeto que representa directamente una fila e la base de datos. Todo el acceso a la fila queda oculto tras la interfaz de la clase. En principio, no representa mayor lógica de negocio.
Active Record
Te permite disponer de un objeto que tiene tanto la lógica de acceso a datos como la lógica de dominio.
Data Mapper
Te permite disponer de dos objetos. El primero representa la lógica de negocio. El segundo el acceso a datos. Se trata de realizar una correlación entre objetos de lógica de negocio y tablas de la base de datos.
Table Data Gateway y Row Data Gateway son los dos patrones conlos que no se realiza ningún tipo de mapeo entre la base de datos y la lógica de negocio. La principal ventaja es que te permite, escribiendo muy poco código, disponer de un acceso a base de datos limpio y bien estructurado. La desventaja es que presenta bastantes dificultades a la hora de incluir lógica de negocio y crear un auténtico Model.
Active Record y Data Mapper, en cambio, sí ofrecen la posibilidad de incluir fácilmente lógica de negocio junto con el acceso a datos. En el caso de Active Record esa lógica de negocio se mezclará con el acceso a datos en la misma clase. Si el mapeo entre las clases y las tablas de la base de datos es sencillo, será suficiente. En caso contrario, habrá que separar ambas lógicas (lógica de negocio de lógica de acceso a datos) utilizando Data Mapper.