sábado, 14 de junio de 2014

Data Access Object en PHP




Bien dicen que la Universidad es para fortalecer los conocimientos, esto nos lleva a DAO.
DAO es un patrón de diseño para crear una capa de persistencia.
El Data Access Object (DAO) es un componente de software que suministra una interfaz común entre una aplicación y uno o mas dispositivos de almacenamiento, como puede ser una Base de Datos o un simple archivo
.





Como funciona?
Bien DAO lo que hace es encapsular el acceso a la Base de datos. Digamos cuando la logica de negocio necesita acudir  a la Base de Datos este accede mediante los métodos muy conocidos CRUD
(Create, Read, Update, Delete) o traducido (Crear, Leer,Actualizar y Borrar).

Un ejemplo, digamos que nuestro Business Object necesita guardar un dato en nuestra Base de Datos
y llamara a nuestro metodo Create, al Business Object no le interesa lo que haga este metodo, este depende del DAO por lo cual lo debe de implementar.
Lo unico que debe saber el Business Object que el metodo Create va a guardar los datos y digamos el método Delete los va a eliminar como asi con los demas.

En una Base de Datos relacional por cada Tabla debemos crear un DAO.
Resumiendo el DAO es la que interactua con la Base de Datos y sus metodos dependen de que lo que queremos hacer pero por lo normal se implementan los metodos del CRUD.


BusinessObject

El BusinessObject representa al cliente datos. Es el objeto que requiere el acceso a la fuente de datos para obtener y almacenar datos. 

DataAccessObject

El DataAccessObject es el objeto principal de este patrón. El DataAccessObject abstrae la implementación subyacente de acceso a datos para el BusinessObject para permitir un acceso transparente a la fuente de datos. El BusinessObject también delegados de carga de datos y operaciones de la tienda a la DataAccessObject.

DataSource

Esto representa una implementación de fuente de datos. Una fuente de datos podría ser una base de datos tal como un RDBMS, SGBDOO, repositorio XML, sistema de archivo plano, y así sucesivamente.

TransferObject

Esto representa un Transfer Object se utiliza como soporte de datos. El DataAccessObject puede utilizar un Transfer Object para devolver los datos al cliente. El DataAccessObject también puede recibir los datos del cliente en un Transfer Object para actualizar los datos del origen de datos.
Bien una breve explicación del Tranfer Object.
Son utilizados para transportar datos desde la Base de Datos hacia la capa de logica de negocio y viceversa.
En el ejemplo del método Create digamos que inserta un nuevo dato, pero, ¿cual es el dato? este dato se pasara a través del Transfer Object y es un objeto común que tiene como atributos del modelo, con sus respectivos métodos (getters and setters).
Si tenemos una tabla en nuestra Base de Datos llamada Usuario, nuestro Transfer Object tendría que ser una clase llamada Usuario con atributos por ejemplo, id, nombre, apellidopaterno.... etc. 
Entonces cuando nuestro Business Object ahora si quiera guardar un dato, este debe crear un objeto de tipo Usuario y se lo pasara a el método Create.
Nuestro DataSource.


El TransferObject.


Interfaz para nuestro UsuarioDAO.


El dao de nuestra tabla DAO, que contiene varios métodos.

selectUsuarios: Nos traera todos los registros de nuestra tabla usuarios.
selectUsuarioById: Nos trae un unico registro que lo buscamos por Id.



searchUsuario: Buscar un usuario por el correo y la clave y nos obtiene un unico registro.
insertUsuario: Inserta un dato de tipo Usuario y nos devuelve un entero.


updateUsuario: Actualiza un registro Usuario y regresa un entero.
deleterUsuario: Elimina un registro por medio del id.


Business Object





8 comentarios:

  1. exelente me sirvio de mucho gracias amigo

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Hola buenas noches, me gustaría platicar contigo. ¿Hay alguna oportunidad de tu correo o teléfono?. De ante mano gracias.

    ResponderEliminar
    Respuestas
    1. Hola buen día, mi correo es danielbrenaaquino@gmail.com Saludos

      Eliminar
  4. A parte del DAO, al crear interfaces estoy seguro que estás utilizando otro patrón, ¿Cuál es? Muchas gracias.

    ResponderEliminar
  5. No me queda claro porque cuando usas los métodos de la clase usuarioDAO como en la línea 13 con $dao->selectUsuarios(); o en la línea 38 con $sao->searchUsuario(...); no recoges lo que devuelven dichos métodos.

    ResponderEliminar
  6. Por qué en la clase DataSource en la línea 46 la variable se llama $numero_tablas_efectadas, no debería ser $numero_registros_afectados ????. Gracias

    ResponderEliminar