miércoles, 3 de diciembre de 2008

Herramientas para la gestión del Acceso a Datos: Hibernate y DAO

Existen múltiples estrategias o herramientas para optimizar el acceso a la capa de datos (Base de Datos) y mantener la persistencia objeto-relacional en una aplicación Web implementada con Java EE. Una de las más conocidas y extendidas es Hibernate.

Se trata de una herramienta de mapeo objeto-relacional que proporciona un framework para llevar a cabo esta operación de asociación entre dos paradigmas conceptualmente muy distintos, el orientado a objetos y el relacional. En el caso de enfrentarnos a un problema sencillo en el que los objetos no revisten una complejidad extrema, mantener la persistencia no es algo complejo, pero la cosa cambia cuando los objetos que queremos almacenar presentan una gran cantidad de atributos compuestos, asociaciones y agregaciones, donde se han de guardar numerosas referencias, con lo que el tamaño de los datos en el repositorio se incrementan de forma exponencial sin que ello suponga un beneficio global para el sistema.

Para lograr este mapeo, Hibernate, permite al desarrollador detallar cómo es su modelo de datos, qué relaciones existen y qué forma tienen. Con esta información, el mapeador faculta a la aplicación para manipular los datos de la base operando sobre objetos, con todas las características de la POO. Hibernate convertirá los datos entre los tipos utilizados por Java y los definidos por SQL. Hibernate genera las sentencias SQL y libera al desarrollador del
manejo manual de los datos que resultan de la ejecución de dichas sentencias, manteniendo la portabilidad entre todos los motores de bases de datos con un ligero incremento en el tiempo de ejecución.

Otra de las ventajas que aporta esta herramienta es que las relaciones son definidas una sola vez por el equipo de desarrollo y se almacenan en un fichero XML que es leido de forma directa por el propio mapeador, con lo que no es necesario estar constantemente indicando dónde va cada objeto o de qué tabla se ha de obtener qué dato.
Y la otra herramienta de la que queríamos hablar era del patrón de diseño de Java EE Data Access Object. Proporciona una interfaz común para el acceso a los datos, utilizando un Objeto como medio de acceso al repositorio físico. Esto permite abstraer y encapsular las operaciones relacionadas con el tratamiento de la propia BBDD.

La ventaja de usar objetos de acceso a datos es que cualquier objeto de negocio (aquel que contiene detalles específicos de operación o aplicación) no requiere conocimiento directo del destino final de la información que manipula. Ello implica que estos objetos se pueden emplear para hacer independiente la aplicaciónde la herramienta de persistencia que utilice (JDBC o incluso el propio Hibernate), con lo que la tecnología subyacente puede ser modificada sin
que las otras partes de la aplicación hayan de sufrir cambio alguno.

El principal inconveniente que presenta el uso de este patrón es que la complejidad de emplear otra capa intermedia adicional a la de persistencia incide en un aumento considerable del tamaño total del programa, lo cual repercute en el rendimiento del mismo, que decrecerá.

No hay comentarios: