PATRON DAO
Data Access Object
(OBJETO DE ACCESO A DATOS)
JOSE LUIS MESA
ANDRES RICARDO TORRES
CLAUDIA PATRICIA OVIEDO
JENNIFER ANDREA TENORIO
PATRON DAO
(OBJETO DE ACCESO A DATOS)
Data Access Object (DAO, Objeto de
Acceso a Datos) es un componente de
software que suministra una interfaz común
entre la aplicación y uno o más
dispositivos de almacenamiento de datos,
tales como una Base de datos o un
archivo.
PATRON DAO
(OBJETO DE ACCESO A DATOS)
El patron DAO es una solucion al problema del
diferencial de impedancia entre un programa de
aplicacion orientado a objetos y una base de
datos relacional, empleando unicamente la
interfaz de programacion (API) nativa del
manejador de base de datos, o algun otro
sustituto como el ODBC, DBI, entre otros.
PATRON DAO
(OBJETO DE ACCESO A DATOS)
Utilizamos el patron Data Access Object
(DAO) para:
abstraer y encapsular los accesos,
 gestionar la conexiones a la fuente de
datos
 obtener los datos almacenados.

PATRON DAO
(OBJETO DE ACCESO A DATOS)

UN EJEMPLO:
PATRON DAO
(OBJETO DE ACCESO A DATOS)
Supongamos que tenemos la siguiente
tabla:
CREATE TABLE ciudades (
nombre
varchar(80),
departamento
varchar(80)
);
PATRON DAO
(OBJETO DE ACCESO A DATOS)
Entonces ahora tenemos que crear 2 clases
por cada relación con la que nuestra
aplicación tendrá acceso: el acceso a
datos y el transporte de datos.
PATRON DAO
(OBJETO DE ACCESO A DATOS)
Clase de transporte de datos:
public class Ciudad
{
//atributos = campos de la relacion
String nombre;
String departamento;
//metodos
String getNombre()
{ ... }
String getDepartamento()
{ ... }
}
PATRON DAO
Clase de acceso a Datos
public class CiudadesDAO
{
Ciudad ciudad;
...
// establece conexión a la base de datos
//implementa opera. basicas como insert, update, delete
void insert (){...}
void delete(){...}
Ciudad find()
{
... SELECT * FROM ciudades WHERE nombre ... }
}
PATRON DAO
(OBJETO DE ACCESO A DATOS)
Sin embargo, las aplicaciones del mundo
real no están compuestas por el acceso a
una simple tabla, para enfrentar esta
situación se utiliza el patrón Factory para
implementar una fábrica de objetos DAO.
PATRON DAO
(OBJETO DE ACCESO A DATOS)
PROBLEMAS A RESOLVER
Sistemas poco modulares.
Sistemas difícilmente mantenibles.
Distintas responsabilidades no deben ser delegadas en la
misma clase. Este es un principio básico del desarrollo de
software, propuesto originalmente por Dijkstra en los años 70
(aunque no exactamente en esta forma), que lo llamó
separation of concerns o separación de incumbencias.
PATRON DAO
(OBJETO DE ACCESO A DATOS)
PATRON DAO
(OBJETO DE ACCESO A DATOS)
En general (aunque esto es una decisión de diseño), por cada objeto de negocio en
nuestro sistema, crearemos un DAO distinto. En nuestro caso además del PrestamosDAO
podríamos tener también un UsuarioDAO y un LibroDAO.
Aunque aquí el almacén de datos se representa como una base de datos compatible
JDBC no tiene por qué ser siempre así (Uso del patrón Factory para poder instanciar los
DAOs) reduciendo al máximo la dependencia del DAO concreto a crear (por ejemplo
de MySQL, Oracle, XML, fichero .properties, ...)
La información que devuelve o se le pasa al DAO se encapsula en objetos de tipo
transfer object (en nuestro caso la clase Préstamo), que, simplificando, no son más que
"contenedores de información".
PATRON DAO
(OBJETO DE ACCESO A DATOS)
RELACIÓN CON OTROS PATRONES
El DAO se relaciona comúnmente con los siguientes
patrones:
Transfer object: la información que se envía/recibe
del DAO se "empaqueta"
en estos objetos.
Factory: con el objeto de conseguir la
independencia del almacén de datos,
comúnmente se usa este patrón para instanciar los
DAOs.
PATRON DAO
(OBJETO DE ACCESO A DATOS)

VENTAJAS

Cualquier objeto no requiere conocimiento
directo del destino final de la información
que se manipula

Se baja en nivel de acoplamiento entre
clases, reduciendo la complejidad de realizar
cambios

Se aisla las conexiones a la fuente de datos
en una capa fácilmente identificable y
mantenible.
Bibliografía




http://www.programacion.com/java/tutorial/patrones2/8/
http://www.glib.org.mx/article.php?story=2006070218511041
8
http://en.wikipedia.org/wiki/Software_patt
ern
http://java.sun.com/blueprints/corej2eepat
terns/Patterns/DataAccessObject.html
Descargar

PATRON DAO Data Access Object (OBJETO DE ACCESO A