escuela técnica superior de ingeniería informática Diseño de la capa de datos. Patrón DAO Departamento de Lenguajes y Sistemas Informáticos Ingeniería del Software II DAO (Data Access Object) • Definido como un “Core J2EE Patterns” • Objetivo: • Abstraer y encapsular todos los accesos a la fuente de datos • Características: • DAO oculta completamente los detalles de implementación de la fuente de datos a sus clientes • El interface expuesto por DAO no cambia cuando cambia la implementación de la fuente de datos subyacente (diferentes esquemas de almacenamiento) Estructura de DAO BussinesObject uses DataAccessObject encapsulates DataSource Creates/uses Obtains/modifies TransferObject • BusinessObject Es el objeto que quiere acceder a la fuente de datos para poder almacenar o consultar datos. • DataAccessObject: Abstrae al BusinessObject de los detalles del acceso a la fuente de datos. • DataSource: Representa la implementación de la fuente de datos en sí. • Transfer Object: es un objeto intermedio entre el BusinessObject y el DataAcessObject Participantes y responsabilidades BussinesObject DAO DataSource 1: Create 2: Get Data 2.1: Get Data 2.2: Create TransferObject 2.3: Return Object 3: Set Property 4: Set Property 5: Set Data 5.1: Get Property 5.2: Get Property 5.3: Set Data Ejemplo <<Class Model>> domain Cus tom e r -customerID:String -name :String -surname:String +getCustomerID ():String +setCustomerID (customerID:String):void +getName ():String +setName (name:String):void +getSurname ():String +setSurname(surname:String):void Created with Pos eidon for UML Com m unity Edition. Not for Com m ercial Us e. Ejemplo <<Class Model>> data << interface >> ICus tom e rDAO +selectCustomer (customerID:String):Customer +insertCustomer (c:Customer ):void +deleteCustomer (customerID:String):void +selectAllCustomers ():List XM LCus tom e rDAO JDBCCus tom e rDAO JDBCConne ctionM anage r uses << create >>+JDBCCustomerDAO ():JDBCCustomerDAO +selectCustomer (customerID:String):Customer +deleteCustomer (customerID:String):void +insertCustomer (c:Customer ):void +selectAllCustomers ():List #finalize():void -dBUri :String= "jdbc:mysql://127.0.0.1:3306/pos" -driverName :String= "com.mysql.jdbc.Driver" -passw ord:String= "practica" -username:String= "practica" << create >>+ConnectionManager ():JDBCConnectionManager +getInstance():JDBCConnectionManager +checkOut():Connection +checkIn(conn:Connection):void #finalize():void - cm Created with Pos eidon for UML Com m unity Edition. Not for Com m ercial Us e. Referencias Patrón DAO: http://www.programacion.com/java/tutorial/patrones2/8/ http://www.tic.udc.es/~fbellas/teaching/is/Tema2Apartado2.3.2.pdf http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html • ¿Podemos mejorar esta lección? Mándanos un email a benavides@us.es