170 likes | 340 Views
Introducción a HIBERNATE. Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA. JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX. ORM.
E N D
Introducción a HIBERNATE Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX
ORM • Un ORM o Mapeador Objeto-Relacional es un framework que propone una nueva forma de modelar los datos, y que permite solucionar la diferencia que existe entre los paradigmas de la POO (Programación Orientada a Objetos) y el modelo Relacional. • El modelo Relacional trata con relaciones y conjuntos por lo cual tiende a ser de carácter matemático, mientras que el modelo de la POO trata con objetos y las asociaciones entre ellos; el problema entre estos dos modelos surge en el momento de querer persistir los objetos de negocio.
ORM • Escritura mediante JDBC abrir una conexión, crear una sentencia en SQL y copiar todos los valores de las propiedades de un objeto en la sentencia, ejecutarla y así almacenar el objeto. • Sencillo para un caso simple. • Complicado si el objeto posee muchas propiedades, o bien se necesita almacenar un objeto que a su vez posee una colección de otros elementos. Se necesita crear mucho más código, además del tedioso trabajo de creación de sentencias SQL. • Lectura mediante JDBC mismo problema que la escritura. • Este problema se conoce con el nombre de “Impedancia Objeto-Relacional” conjunto de dificultades técnicas que surgen cuando una base de datos relacional se usa en conjunto con un programa escrito bajo POO.
ORM • Ejemplo de “Impedancia Objeto-Relacional” • Objeto Agenda Telefónica con atributo una colección de objetos de la clase Persona, en la que a cada persona le corresponde su correspondiente atributo “teléfono”. • Al transformar esto a relacional se ocuparía más de una tabla para almacenar la información varias sentencias sql y mucho código.
ORM • ¿Por qué necesitamos un ORM?
ORM • Los ORMs (además de mapear) • Permiten reducir susceptiblemente el código necesario para llevar a cabo las operaciones de persistencia y recuperación de objetos • Proporcionan interfases más simples para el manejo de objetos a través de su propio lenguaje de consulta • Proveen al programador de configuraciones que le permiten optimizar los tiempos de respuesta en sus correspondientes aplicaciones • ORMs más conocidos • Hibernate Código libre • Toplink Oracle • JPA (viene con EJB 3.0 y toma las ideas de Hibernate) Sun
ORM • Una herramienta ORM trata de hacer todas estas operaciones de mapeo pesadas por nosotros. • Con una buena ORM, sólo tendremos que definir la forma en la que establecemos la correspondencia entre las clases y las tablas una sola vez (indicando que propiedad se corresponde con que columna, que clase con que tabla, etc.). • Después de esto, podremos utilizar los objetos de nuestra aplicación y decirle a nuestra ORM que los haga persistentes, con una instrucción similar a: orm.save(myObject).
Ventajas y Desventajas • Ventajas • Facilidad de Programación • Apta para aplicaciones transaccionales sin procesamiento masivo. • Desventajas • Disminución de rendimiento. • Gran cantidad de ficheros de configuración. • No apta para aplicaciones de gran manejo de datos
Componentes • Configuración de las librerías (.jar) necesarias • Archivo de Configuración de Hibernate. • Archivos de Mapeo de Clases vs BD • Clase Utilitaria de Hibernate • Clases de nuestra Aplicación.
Librerías Necesarias • Se requieren de ciertos .jar para poder funcionar:
Configuración de Hibernate • Es un archivo xml que contiene la configuración principal del hibernate. (hibernate.cfg.xml) • Contiene la información de la conexión. • Contiene la información de la forma del manejo de la transacción. • Entre otros • Ver (http://docs.jboss.org/hibernate/stable/core/reference/en/html/tutorial-firstapp.html#tutorial-firstapp-configuration )
Clase Utilitaria • Mantiene el manejo de la conexión. • Mantiene los métodos de búsqueda y actualización genérica.