Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA...

15
Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX GRUPO QUERCUS ENGINEERING SOFTWARE, UEX

Transcript of Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA...

Page 1: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA

Introducción a HIBERNATE

JOSÉ LUIS REDONDO GARCÍA. JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEXGRUPO QUERCUS ENGINEERING SOFTWARE, UEX

Page 2: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

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.

Page 3: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

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.

Page 4: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

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.

Page 5: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

ORM

¿Por qué necesitamos un ORM?

Page 6: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

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

Page 7: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

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).

Page 8: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

Hibernate

Page 9: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

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

Page 10: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

Componentes

Configuración de las librerías (.jar) necesarias

Archivo de Configuración de Hibernate.Archivos de Mapeo de Clases vs BDClase Utilitaria de HibernateClases de nuestra Aplicación.

Page 11: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

Librerías Necesarias

Se requieren de ciertos .jar para poder funcionar:

Page 12: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

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 )

Page 13: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

Mapeo de Clases (<clase>.hbm.xml)

Page 14: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

Clase Utilitaria

Mantiene el manejo de la conexión.

Mantiene los métodos de búsqueda y actualización genérica.

Page 15: Primeros pasos para el mapeo entre modelo O.O y modelo Relacional usando Hibernate en JAVA Introducción a HIBERNATE JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS.

Hibernate vs JDBC