T05P2 Modelo DAO. Gabriel Sanchez
T05P2 Modelo DAO. Gabriel Sanchez
T05P2 Modelo DAO. Gabriel Sanchez
LICENCIATURA EN:
INGENIERÍA EN COMPUTACIÓN
“Paradigmas de Programación I”
TERCER SEMESTRE
Grupo: ICO 26
• DAO encapsula el acceso a la base de datos. Por lo que cuando la capa lógica de negocio necesite interactuar
con la base de datos, va a hacerlo a través de la API que le ofrece DAO.
• Generalmente esta API consiste en métodos CRUD (Crear, Leer, Actualizar y Eliminar). Entonces por ejemplo
cuando la capa de lógica de negocio necesite guardar un dato en la base de datos va a llamar a un método
créate().
• DAO Consiste básicamente en una clase que es la que interactúa con la base de datos.
Los métodos de esta clase dependen de la aplicación y de lo que queramos hacer.
Ventajas:
La ventaja de utilizar objetos de acceso a datos es la separación relativamente simple y riguroso entre dos partes
importantes de una aplicación que puede y debe saber casi nada el uno del otro, y que se puede esperar que
evolucione con frecuencia y de forma independiente. Cambio de la lógica de negocio puede depender de la misma
interfaz DAO, mientras que los cambios en la lógica de persistencia no afectan a los clientes DAO, siempre y cuando
la interfaz sigue siendo implementado correctamente.
• La flexibilidad tiene un precio. Cuando se agregan DAO a una aplicación, la complejidad adicional de usar
otra capa de persistencia incrementa la cantidad de código ejecutado durante el tiempo de ejecución. La
configuración de las capas de persistencia requiere en la mayoría de los casos mucho trabajo.
• Las aplicaciones críticas con el rendimiento no fallan usando DAOs.
Estructura
v
Objeto de Negocio
El BusinessObject representa el cliente de datos. Es el objeto que requiere el acceso a la fuente de datos para
obtener y almacenar los datos. Un BusinessObject puede ser implementado como un bean de sesión, bean de
entidad, o algún otro objeto de Java, además de un servlet o ayudante de frijol que accede a la fuente de datos.
Objeto de acceso a datos
El DataAccessObject es el objeto principal de este patrón. El DataAccessObject abstrae la aplicación de acceso a
datos subyacentes para el BusinessObject para permitir un acceso transparente a la fuente de datos. El
BusinessObject también delega la carga de datos y operaciones de la tienda a la DataAccessObject.
Fuente de datos
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. Un origen de datos
también puede ser otro sistema (legacy / servidor), servicios (servicio de B2B o de oficinas de la carta de crédito),
o algún tipo de repositorios (LDAP).
TransferObjeto
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.
Utilizar un Data Access Object (DAO) para abstraer y encapsular todos los accesos a la fuente de datos. El DAO
maneja la conexión con la fuente de datos para obtener y almacenar datos.
El DAO implementa el mecanismo de acceso requerido para trabajar con la fuente de datos. Esta fuente de datos
puede ser un almacenamiento persistente como una RDMBS, un servicio externo como un intercambio B2B, un
repositorio LDAP, o un servicio de negocios al que se accede mediante CORBA Internet Inter-ORB Protocol (IIOP) o
sockets de bajo nivel. Los componentes de negocio que tratan con el DAO utilizan un interface simple expuesto por
el DAO para sus clientes. El DAO oculta completamente los detalles de implementación de la fuente de datos a sus
clientes. Como el interface expuesto por el DAO no cambia cuando cambia la implementación de la fuente de datos
subyacente, este patrón permite al DAO adaptarse a diferentes esquemas de almacenamiento sin que esto afecte
a sus clientes o componentes de negocio. Esencialmente, el DAO actúa como un adaptador entre el componente y
la fuente de datos.
¿Qué es un patrón de diseño?
Un patrón de diseño es una solución probada que resuelve un tipo específico de problema en el desarrollo de
software referente al diseño.
Existen una infinidad de patrones de diseño los mismos que se dividen en categorías por ejemplo: de creación,
estructurales, de comportamiento, interacción etc.
Cada uno se especializa en resolver un problema específico, si quieres profundizar y revisar todas las categorías y
ejemplos a detalle puedes visitar Design Patterns Book.
El tema es bastante extenso, que no alcanzaría una sola entrada, pero esta vez quiero hablar de los patrones MVC,
DAO, DTO que en lo personal y en la práctica considero los más utilizados al menos para el desarrollo en Java.icon
• El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botón,
enlace, etc.)
• El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción solicitada por
el usuario. El controlador gestiona el evento que llega, frecuentemente a través de un gestor de eventos
(handler) o callback.
• El controlador accede al modelo, actualizándolo, posiblemente modificándolo de forma adecuada a la
acción solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los
controladores complejos están a menudo estructurados usando un patrón de comando que encapsula las
acciones y simplifica su extensión.
• El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene
sus datos del modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el
modelo (por ejemplo, produce un listado del contenido del carro de la compra). El modelo no debe tener
conocimiento directo sobre la vista. Sin embargo, se podría utilizar el patrón Observador para proveer cierta
indirección entre el modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio.
Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun así el modelo en sí mismo
sigue sin saber nada de la vista. El controlador no pasa objetos de dominio (el modelo) a la vista aunque
puede dar la orden a la vista para que se actualice. Nota: En algunas implementaciones la vista no tiene
acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista.
• La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.
MVC en la web
Como desarrollador web, este patrón probablemente será bastante familiar, incluso si nunca lo has usado
conscientemente antes. Su modelo de datos probablemente esté contenido en algún tipo de base de datos (ya sea
una base de datos tradicional del lado del servidor como MySQL, o una solución del lado del cliente como
IndexedDB). El código de control de su aplicación probablemente esté escrito en HTML / JavaScript , y su interfaz
de usuario probablemente esté escrita usando HTML / CSS / o lo que sea. Esto se parece mucho a MVC, pero MVC
hace que estos componentes sigan un patrón más rígido.
En los primeros días de la Web, la arquitectura MVC se implementó principalmente en el lado del servidor, con el
cliente solicitando actualizaciones a través de formularios o enlaces, y recibiendo vistas actualizadas para mostrar
en el navegador. Sin embargo, en estos días, mucha de la lógica se enviaba al cliente con la llegada de los almacenes
de datos del lado del cliente, y XMLHttpRequest permitía actualizaciones parciales de la página según era necesario.
Los frameworks de desarrollo web como AngularJS y Ember.js implementan una arquitectura MVC, aunque de
maneras ligeramente diferentes.
El flujo que sigue el control generalmente es el siguiente:
Referencias:
DATA ACCESS OBJECT (DAO). (2013). Blogspot.com. http://castellanosmiguel.blogspot.com/2013/07/dataaccess-
object-dao-definicion-dao-es.html
Data Access Object | Marco de Desarrollo de la Junta de Andalucía. (2022). Juntadeandalucia.es.
http://www.juntadeandalucia.es/servicios/madeja/contenido/recurso/174
Data access object. (2013, July 7). Data Access Object; Data access object.
https://ismaelgomezvelasco.wordpress.com/data-access-object-dao/data-access-object/
MVC - Glosario de MDN Web Docs: Definiciones de términos relacionados con la Web | MDN. (2022, September
5). Mozilla.org. https://developer.mozilla.org/es/docs/Glossary/MVC