Data Access Object
Data Access Object
Definicin
DAO Es un patrn de diseo utilizado para crear una capa de persistencia
Funcionamiento
DAO encapsula el acceso a la base de datos. Por lo que cuando la capa lgica
de negocio necesite interactuar con la base de datos, va a hacerlo a travs de
la API que le ofrece DAO.
Generalmente esta API consiste en mtodos CRUD (Create, Read, Update, y
Delete). Entonces por ejemplo cuando la capa de lgica de negocio necesite
guardar un dato en la base de datos va a llamar a un mtodo crate().
DAO Consiste bsicamente en una clase que es la que interacta con la base
de datos.
Los mtodos de esta clase dependen de la aplicacin y de lo que queramos
hacer.
Ventajas
Los Objetos de Acceso a Datos son un Patrn de los subordinados de Diseo Core J2EE y
considerados una buena practica. La ventaja de usar objetos de acceso a datos es que
cualquier objeto de negocio (aquel que contiene detalles especficos de operacin o
aplicacin) no requiere conocimiento directo del destino final de la informacin que
manipula.
Los Objetos de Acceso a Datos pueden usarse en Java para aislar a una aplicacin de la
tecnologa de persistencia Java subyacente (API de Persistencia Java), la cual podra ser
JDBC, JDO, Enterprise JavaBeans, TopLink, Hibernate, iBATIS, o cualquier otra tecnologa
de persistencia. Usando Objetos de Acceso de Datos significa que la tecnologa
subyacente puede ser actualizada o cambiada sin cambiar otras partes de la aplicacin.
Desventajas
La flexibilidad tiene un precio. Cuando se aaden DAOs a una aplicacin, la complejidad
adicional de usar otra capa de persistencia incrementa la cantidad de cdigo ejecutado
durante tiempo de ejecucin. La configuracin de las capas de persistencia requiere en la
mayora de los casos mucho trabajo.
Las aplicaciones crticas con el rendimiento no deberan usar DAOs.
distintos
(Modelo,
Vista
Controlador).
El
Patrn
MVC
se
ve
Un modelo puede tener diversas vistas, cada una con su correspondiente controlador.
Un ejemplo clsico es el de la informacin de una base de datos, que se puede
presentar de diversas formas: diagrama de tarta, de barras, tabular, etc. Veamos cada
componente.
Modelo
Es la representacin especfica de la informacin con la cual el sistema opera. La lgica
de datos asegura la integridad de estos y permite derivar nuevos datos; por ejemplo, no
permitiendo comprar un nmero de unidades negativo, o calculando los totales e
impuestos del carrito de compra. Esto quiere decir que aqu se operan los datos y las
reglas
de
negocio
asociadas
al
sistema,
Define las reglas de negocio (la funcionalidad del sistema). Un ejemplo de regla
puede ser: Si la mercanca pedida no est en el almacn, consultar el tiempo de entrega
estndar del proveedor.
Si estamos ante un modelo activo, notificar a las vistas los cambios que en los
datos pueda producir un agente externo (por ejemplo, un fichero batch que actualiza los
datos, un temporizador que desencadena una insercin, etc.). Un ejemplo de MVC con un
modelo pasivo (aquel que no notifica cambios en los datos) es la navegacin web, que
responde a las entradas del usuario, pero no detecta los cambios en datos del servidor.
Vista
Pueden dar el servicio de Actualizacin(), para que sea invocado por el controlador
o por el modelo (cuando es un modelo activo que informa de los cambios en los datos
producidos por otros agentes).
Controlador
El Controlador es la capa que controla todo lo que puede realizar nuestra aplicacin.
Responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y
probablemente en la vista. Est compuesto por acciones que se representan con
funciones en una clase. Por ejemplo, yo tengo mi controlador llamado Clientes, y este
controlador puede realizar las acciones Crear,Editar,Listar entre otras.
El controlador es responsable de:
Recibe los eventos de entrada (un clic, un cambio en un campo de texto, etc.).
El diagrama de secuencia
Pasos:
1.
2.
3.
4.
5.
Ventajas y Desventajas
La popularidad de este diseo se debe mas que todo a que es mucho mas fcil
organizar aplicaciones grandes.
Las ventajas
Las desventajas:
Tener que ceirse a una estructura predefinida, lo que a veces puede incrementar la
complejidad del sistema. Hay problemas que son ms difciles de resolver respetando el
patrn MVC.
Ejemplo
Bien, pero esto cmo se implementa? Existe una pequea dificultad: la mayor parte de
las herramientas de desarrollo incorporan en las clases de la vista gran parte o todo el
procesamiento de eventos. Con lo que el controlador queda semioculto dentro de la
vista. A pesar de ello, podemos acercarnos bastante al patrn.
Modelo
Un ejemplo de la vida real de un Modelo seria una clase llamada Cliente, la cual tiene
las mismas propiedades de una tabla cliente en mi base de datos
Controlador
Un Controlador seria el Controlador Cliente, generalmente las clases Controladoras
llevan el sufijo Controlador, as que en nuestro caso se llamara ClientesControlador.
El controlador llevara las acciones que nosotros podemos realizar en un cliente como
por ejemplo, agregar, borrar, modificar, agregar orden, etc.
Vista
La Vista es el mas fcil de entender, simplemente es nuestra pagina html. A travs de la
accin del Controlador especificamos a que vista queremos enviar el resultado de la
accin del Controlador. En algunos casos es necesario pasar informacin a la Vista desde
el Controlador, esto se logra fcilmente en el cdigo de la accin.
MVC esta demostrando ser un patrn de diseo bien elaborado pues las aplicaciones que
lo implementan presentan una extensibilidad y una mantenibilidad nicas comparadas con otras
aplicaciones basadas en otros patrones.
Como desventajas tenemos:
Para desarrollar una aplicacin bajo el patrn de diseo MVC es necesario una mayor
dedicacin en los tiempos iniciales del desarrollo. Normalmente el patrn exige al programador
desarrollar un mayor nmero de clases que, en otros entornos de desarrollo, no son necesarias.
Sin embargo, esta desventaja es muy relativa ya que posteriormente, en la etapa de
mantenimiento de la aplicacin, una aplicacin MVC es mucho ms mantenible, extensible y
modificable que una aplicacin que no lo implementa.
MVC requiere la existencia de una arquitectura inicial sobre la que se deben construir
clases e interfaces para modificar y comunicar los mdulos de una aplicacin. Esta arquitectura
inicial debe incluir, por lo menos, un mecanismo de eventos para poder proporcionar las
notificaciones que genera el modelo de aplicacin; una clase Modelo, otra clase Vista y una clase
Controlador genricas que realicen todas las tareas de comunicacin, notificacin y actualizacin
que sern luego transparentes para el desarrollo de la aplicacin.