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