patrones:dao
Diferencias
Muestra las diferencias entre dos versiones de la página.
— | patrones:dao [2023/04/07 21:26] (actual) – creado - editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== DAO ====== | ||
+ | El patrón Data Access Object (DAO) pretende principalmente independizar la aplicación de la forma de acceder a la base de datos, o cualquier otro tipo de repositorio de datos. Para ello se centraliza el código relativo al acceso al repositorio de datos en las clases llamadas DAO. Fuera de las clases DAO no debe haber ningún tipo de código que acceda al repositorio de datos. | ||
+ | Las ventajas de usar el patrón DAO son las siguientes: | ||
+ | * Modificar el API de acceso: Se podría cambiar el acceso a la base de datos de usar JDBC a usar Hibernate y sólo habría que modificar las clases DAO no afectando al resto de la aplicación. | ||
+ | * Modificar el repositorio de datos: Sería posible que el acceso a los usuarios se hiciera mediante LDAP a un servicio de directorio en vez de estar dichos usuarios en una base de datos relacional. Como en el caso contrario sólo sería necesario cambiar las clases DAO y el resto de la aplicación no sería necesaria modificarla. | ||
+ | * Implementación de // | ||
+ | |||
+ | Los siguientes diagramas UML muestran ejemplos de objetos DAO. | ||
+ | |||
+ | <uml> | ||
+ | class ProfesorDAO | ||
+ | ProfesorDAO : Profesor create() | ||
+ | ProfesorDAO : void save(Profesor profesor) | ||
+ | ProfesorDAO : void update(Profesor profesor) | ||
+ | ProfesorDAO : Profesor get(int idProfesor) | ||
+ | ProfesorDAO : void delete(int idProfesor) | ||
+ | ProfesorDAO : List< | ||
+ | |||
+ | class UsuarioDAO | ||
+ | UsuarioDAO : Usuario create() | ||
+ | UsuarioDAO : void save(Usuario usuario) | ||
+ | UsuarioDAO : void update(Usuario usuario) | ||
+ | UsuarioDAO : Usuario get(int idUsuario) | ||
+ | UsuarioDAO : void delete(int idUsuario) | ||
+ | UsuarioDAO : List< | ||
+ | |||
+ | </ | ||
+ | |||
+ | La mayor desventaja de usar el patrón DAO es el riesgo de tener código muy similar entre los distintos objetos DAO porque, en caso de modificación o de corrección de un error, sería necesario hacer el mismo trabajo en todas las clases DAO. Por suerte, desde Java y usando [[wp> | ||
+ | ===== Referencias ===== | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// |