8 de julio de 2013

Data Acces Object (DAO)

Este patrón es muy utilizado en el contexto JDBC. Abstrae y encapsula todos los accesos al servidor aislando los objetos de negocio de una implementación particular de la persistencia.

El objeto DAO maneja la conexión con el servidor para obtener y modificar datos implementando los mecanismos de acceso requeridos para trabajar con la base de datos.

Para acceder a datos resistentes en bases de datos relacionales, el API JDBC proporciona acceso y manipulación de datos utilizando sentencias SQL. Sin embargo, incluso en estos entornos de bases de datos relacionales, la actual sintaxis y formato de las sentencias SQL pueden variar dependiendo de la base de datos en particular.

Pero las diferencias son mayores cuando se utilizan distintos mecanismos para el almacenamiento de datos. Para evitar dependencias directas de nuestro código con los mecanismos de almacenamiento de datos es especialmente útil la aplicación de este patrón de diseño.

El patrón de diseño DAO implementa el mecanismo de acceso requerido para trabajar con el servidor. Este podría ser considerado como un almacenamiento persistente como un RDBMS, un repositorio como una base de datos, o un servicio de negocio accesible a través de CORBA Internet Inter-ORB Protocol (IIOP) o sockets de bajo nivel. Los componentes de negocio que se basan en DAO utilizan la interfaz más simple expuesta por DAO para sus clientes. DAO oculta completamente los detalles del origen de datos de la aplicación hacia sus clientes. Debido a que la interfaz expuesta por el DAO a los clientes no cambia cuando los datos subyacentes cambian su implementación de código, este modelo permite al DAO adaptarse a los sistemas de almacenamiento sin que ello afecte a sus clientes o componentes de negocio. Esencialmente, DAO actúa como un adaptador entre el componente y la fuente de datos

·         Estructura (diagrama de clases)


·         Diagrama de secuencia

·         Participantes

-       BusinessObject
El BusinessObject representa al cliente los datos. Es el objeto que requiere el acceso al servidor para obtener y almacenar datos. BusinessObject puede ser implementado como un bean de sesión, beans de entidad, o algún otro objeto Java, además de un servlet o un helper bean que accede a la fuente de datos.
-       DataAccessObject
El DataAccessObject es el objeto principal de este patrón. El DataAccessObject abstrae la implementación del acceso a los datos subyacentes para el BusinessObject para permitir el acceso transparente al servidor. El BusinessObject también delega la carga de datos y operaciones de almacenamiento al DataAccessObject.
-       DataSource
Esto representa una implementación del servidor. Una fuente de datos podría ser una base de datos como un RDBMS, SGBDOO, repositorio XML,sistema de archivos planos, y así sucesivamente. Una fuente de datos también puede ser otro sistema, servicios, o algún tipo de repositorio (LDAP).
-       TransferObject

Esto representa un objeto de transferencia que se utiliza como soporte de datos. El DataAccessObject puede utilizar un objeto de transferencia para devolver los datos al cliente. El DataAccessObject también pueden recibir los datos del cliente en un objeto de transferencia para actualizar los datos del origen de datos.

No hay comentarios:

Publicar un comentario