160 likes | 296 Views
JOSE LUIS MESA ANDRES RICARDO TORRES CLAUDIA PATRICIA OVIEDO JENNIFER ANDREA TENORIO. PATRON DAO Data Access Object (OBJETO DE ACCESO A DATOS).
E N D
JOSE LUIS MESA ANDRES RICARDO TORRES CLAUDIA PATRICIA OVIEDO JENNIFER ANDREA TENORIO PATRON DAOData Access Object(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)
PATRON DAO(OBJETO DE ACCESO A DATOS) • UN EJEMPLO:
CREATE TABLE ciudades ( nombre varchar(80), departamento varchar(80) ); PATRON DAO(OBJETO DE ACCESO A DATOS) Supongamos que tenemos la siguiente tabla:
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(OBJETO DE ACCESO A DATOS)
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
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)
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)
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=20060702185110418 • http://en.wikipedia.org/wiki/Software_pattern • http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html