2. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
Contenidos de la unidad
1. Concepto de mapeo objeto‐relacional (ORM)
2. Características de las herramientas ORM
3. Instalación y configuración de una herramienta ORM
4. Estructura de ficheros de Hibernate. Mapeo y clases persistentes.
5. Sesiones. Objeto para crearlas.
6. Carga, almacenamiento y modificación de objetos
7. Consultas HQL (Hibernate Query Language)
3. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
1. Concepto de mapeo objeto‐relacional (ORM)
El mapeo objeto‐relacional (más conocido con sus siglas ORM)
es una técnica de programación que permite convertir datos entre el sistema de tipos utilizado en un lenguaje de
programación y el utilizado en una base de datos relacional.
4. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
2. Características de las herramientas ORM
Las ventajas principales del mapeo objeto‐relacional son:
Rapidez en el desarrollo
Abstracción de la base de datos
Reutilización
Mantenimiento del código
Lenguaje propio para realizar las consultas
Incentivan la portabilidad y escalabilidad de los programas de software
5. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
2. Características de las herramientas ORM
Uno de los inconvenientes es que las aplicaciones son algo más lentas debido a que todas las consultas que se hagan
sobre la base de datos, el sistema primero deberá transformarlas al lenguaje propio de la herramienta, luego leer los
registros y por último crear los objetos.
Hibernate es una herramienta de mapeo objeto-relacional para la plataforma Java que facilita el mapeo de atributos
entre una base de datos relacional tradicional y el modelo de objetos de una aplicación, mediante ficheros declarativos
(XML) que permiten establecer estas relaciones.
6. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3. Instalación y configuración de una herramienta ORM
En este apartado vamos a instalar y configurar Hibernate en el entorno Eclipse. Para los ejemplos vamos a utilizar una
base de datos MySQL de nombre EJEMPLO, cuyo propietario será el usuario ejemplo y la clave la misma que el nombre
de usuario. La creación de las tablas es la siguiente:
7. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.1. Instalación y configuración de una herramienta ORM. Instalación del plugin.
Para instalar el plugin de Hibernate para Eclipse se necesita tener conexión a Internet.
Primero iniciamos Eclipse.
Pulsamos en la opción del menú horizontal Help->Install New Software
Rellenamos el campo Work With con la siguiente URL: http://download.jboss.org/jbosstools/updates/stable/
Pulsamos el botón Add
Nos pide un nombre, escribimos, por ejemplo, Hibernate y pulsamos el botón Ok.
8. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.1. Instalación y configuración de una herramienta ORM. Instalación del plugin.
Al rato aparece la lista de plugins. Pulsamos en la flechita que aparece a la izquierda de Data Services y
seleccionamos sólo Hibernate Tools, el resto de opciones las desmarcamos. Pulsamos el botón Next y comienza
el proceso de descarga.
Una vez descargado, pulsamos de nuevo Next.
Aceptamos la licencia y pulsamos el botón Finish.
Comienza el proceso de instalación.
Una vez instalado nos pide reiniciar Eclipse.
Para comprobar que se ha instalado correctamente podemos pulsar en el menú
Windows->Open Perspective->Other->Hibernate
9. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.2. Instalación y configuración de una herramienta ORM. Configuración del driver MySQL.
Una vez instalado Hibernate, el siguiente paso es configurarlo para que se comunique con MySQL. En primer lugar
hemos de descargarnos el driver MySQL desde la URL http://dev.mysql.com/downloads/connector/j/, en este caso se
ha descargado el archivo mysql-connector-java-5.1.29.zip. Se descomprime y se instala en la carpeta donde está
instalado el Eclipse.
A continuación desde el menú Windows->Preferences->Data Management->Connectivity->Driver Definitions se pulsa
el botón Add.
Desde la pestaña Name/Type se selecciona MySQL JDBC Driver
Desde la pestaña JAR List pulsamos el botón Add Jar/Zip y se selecciona el fichero mysql-connector-java-5.1.29-
bin.jar que está en la carpeta que se descomprimió del driver.
10. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.2. Instalación y configuración de una herramienta ORM. Configuración del driver MySQL.
A continuación vamos a crear un proyecto y configuraremos Hibernate para que se comunique con MySQL y nos
cree las clases correspondientes de cada tabla de la base de datos EJEMPLO.
Pulsamos en el menú File->New->Project->Java Project y pulsamos en Next, le damos nombre al proyecto y
pulsamos en Finish.
Agregamos el driver MySQL al proyecto, para ello seleccionamos nuestro proyecto, pulsamos el botón derecho del
ratón y seleccionamos Build Paths->Add Libreries.
Se visualiza una ventana desde la que hemos de elegir la opción Connectivity Driver Definition y pulsamos Next.
En la siguiente ventana seleccionamos MySQL JDBC Driver y pulsamos el botón Finish.
11. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.3. Instalación y configuración de una herramienta ORM. Configuración de Hibernate.
El siguiente paso será crear un fichero de configuración de Hibernate hibernate.cfg.xml. Sobre nuestro proyecto,
pulsamos el botón derecho y hacemos click sobre New->Other->Hibernate->Hibernate Configuration File (cfg.xml). Este
fichero contiene todo lo necesario para realizar la conexión a la base de datos.
Previamente deberemos tener creada nuestra base de datos en MySQL.
12. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.3. Instalación y configuración de una herramienta ORM. Configuración de Hibernate.
Pulsamos el botón Next y nos preguntará dónde crear el fichero, dejamos
la carpeta por defecto src y volvemos a pulsar Next. A continuación
escribiremos los datos para conectarnos a la base de datos. Los campos a
rellenar son:
Session Factory name: nombre de nuestra conexión a a MySQL
Database Dialect: cómo se comunica JDBC. En nuestro caso elegiremos
MySQL
Driver Class: se selecciona la clase de JDBC que se va a usar para la
conexión.
Conection URL: ruta de la conexión a nuestra base de datos
Username: usuario que se conectará a la base de datos
Password: clave del usuario.
13. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.3. Instalación y configuración de una herramienta ORM. Configuración de Hibernate.
Desde la pestaña Source se puede editar el fichero XML cfg.xml generado:
14. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.3. Instalación y configuración de una herramienta ORM. Configuración de Hibernate.
Ahora hemos de crear el fichero XML Hibernate Console Configuration.
Pulsamos el botón derecho en nuestro proyecto y seleccionamos New>Other->Hibernate->Hibernate Console Configuration.
En la siguiente ventana, en el campo Name escribimos el nombre para
nuestra configuración, por ejemplo ConfiguracionHibernate. En el campo
Configuration file debe aparecer el fichero de configuración creado
anteriormente (hibernate.cfg.xml)
15. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.3. Instalación y configuración de una herramienta ORM. Configuración de Hibernate.
Finalmente, crearemos el fichero XML Hibernate Reverse Engineering
(reveng.xml) que es el encargado de crear las clases de nuestras tablas
MySQL. Pulsamos el botón derecho en nuestro proyecto y seleccionamos
New->Other->Hibernate->Hibernate
Reverse
Engineering
File
(reveng.xml). Pulsamos Next y se nos pedirá que indiquemos dónde se va
a guardar el fichero. Se debe guardar en la misma carpeta que el fichero
hibernate.cfg.xml, en este caso, la carpeta src.
En la siguiente ventana indicaremos las tablas que queremos mapear.
Desde la lista Console configuration seleccionamos el nombre que le
dimos al fichero Hibernate Console Configuration, en nuestro caso
ConfiguracionHibernate y pulsamos el botón Refresh para que muestre la
base de datos Ejemplo y sus tablas.
Seleccionamos una a una todas las tablas y pulsamos el botón Include.
16. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.4. Generar las clases de la base de datos.
A continuación vamos a generar las clases de nuestra base de datos Ejemplo.
Para ello pulsamos en la flecha al lado del botón Run As
y seleccionamos Hibernate Code Generation
En la siguiente ventana configuramos los siguientes campos:
Console Configuration: seleccionamos ConfiguracionHibernate
Output directory: ha de ser la carpeta src
Package: escribimos primero
Reveng.xml: localizamos el fichero reveng.xml creado anteriormente. Se puede localizar pulsando en el botón Setup.
17. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.4. Generar las clases de la base de datos.
Desde la pestaña Exporters se indica los ficheros que queremos generar. Se marcan las casillas: Domain code, Hibernate
XML Mappins e Hibernate XML Configuration. Pulsamos el botón Apply y después el botón Run.
Se nos generará un paquete llamado primero con las clases Java de las tablas EMPLEADOS y DEPARTAMENTOS así
como un fichero xml para cada tabla con la información de mapeo.
18. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.5. Primera consulta en HQL.
Para comprobar si la conexión a la base de datos funciona correctamente, vamos a realizar alguna consulta en HQL.
Desde el menú Window->Open Perspective->Other->Hibernate abrimos las perspectiva de Hibernate. Desde la pestaña
Hibernate pulsamos en nuestra configuración ConfiguraciónHibernate y pulsamos con el botón derecho del ratón en
Database->HQL Editor.
Escribimos el siguiente código HQL desde la pestaña ConfiguracionHibernate: from Empleados y pulsamos el botón para
ejecutar la consulta.
Desde este entorno también podemos realizar consultas al estilo SQL, por ejemplo:
select dnombre, loc, depNo from Departamentos
select empNo, apellido, salario from Empleados where dept_no = 10
Desde la perspectiva Hibernate y pulsando con el botón derecho en Configuration seleccionamos Mapping Diagram para
visualizar el diagrama de mapeo entre las clases Java y las tablas de la base de datos.
19. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.6. Programar con Hibernate en Eclipse.
Con la configuración realizada, aún no podemos empezar a programar en Java. Hemos de realizar los siguientes pasos:
1.Bajar la última distribución de Hibernate desde http://sourceforge.net/projects/hibernate/files/hibernate3/.
2.Creamos una carpeta dentro de Eclipse con nombre Hibernate. Descomprimimos el ZIP en esta carpeta.
3.Buscamos el fichero hibernate3.jar y lo copiamos en eclipseHibernate
4.Desde la carpeta eclipseHibernatehibernate-distribution-3.6.10.Finallibrequired seleccionamos todos los ficheros
y los copiamos a nuestra carpeta eclipseHibernate
5.Desde la carpeta eclipseHibernatehibernate-distribution-3.6.10.Finallibjpa seleccionamos todos los ficheros y los
copiamos a nuestra carpeta eclipseHibernate
20. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.6. Programar con Hibernate en Eclipse.
6. Bajar la última distribución de la librería slf4j desde la URL http://www.slf4j.org/download.html, lo descomprimimos
y localizamos los ficheros slf4j-1.7.6.jar y slf4j-api-1.7.6.jar para copiarlos en la carpeta eclipseHibernate
7. Desde Eclipse, hacemos clic con el botón derecho en nuestro proyectoy pulsamos en Build Path->Add Libreries y
elegimos User Librery. Pulsamos Next.
8. Pulsamos en User Libreries y a continuación en New. Nos pedirá el nombre de la librería que queremos agregar y
escribimos, por ejemplo, HibernateLib. Pulsamos el botón OK.
9. Pulsamos el botón Add JARs y seleccionamos todos los JAR de nuestra carpeta Hibernate. Pulsamos el botón
Abrir, despuñes Ok y por último, Finish.
Con esto ya podemos crear el primer programa Java en nuestro proyecto que nos va a permitir comunicarnos con
nuestra base de datos.
21. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.6. Programar con Hibernate en Eclipse.
En primer lugar, crearemos una instancia de la base de datos para poder trabajar con ella y que se utilizará a lo largo
de toda la aplicación. Necesitaremos crear un singleton.
El singleton es un patrón de diseño para restringir la creación de objetos pertenecientes a una clase. Su
intención es garantizar que una clase sólo tenga una instancia y proporcionar un punto de acceso global a ella.
El patrón singleton se implementa creando en nuestra clase un método que crea una instancia del objeto sólo
si todavía no existe alguna. Para asegurar que la clase no puede ser instanciada nuevamente se regula el alcance
del constructor (con atributos como protegido o privado).
22. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.6. Programar con Hibernate en Eclipse.
Con esta clase podemos obtener la sesión actual desde cualquier parte de nuestra aplicación:
23. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.6. Programar con Hibernate en Eclipse.
En el siguiente código podemos ver un ejemplo de cómo insertar una fila en la tabla DEPARTAMENTOS:
24. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.6. Programar con Hibernate en Eclipse.
En el siguiente código podemos ver un ejemplo de cómo leer una fila en la tabla DEPARTAMENTOS:
25. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.6. Programar con Hibernate en Eclipse.
En el siguiente código podemos ver un ejemplo de cómo actualizar una fila en la tabla DEPARTAMENTOS:
26. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.6. Programar con Hibernate en Eclipse.
En el siguiente código podemos ver un ejemplo de cómo borrar una fila de la tabla DEPARTAMENTOS:
27. UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)
3.6. Programar con Hibernate en Eclipse.
En el siguiente código podemos ver un ejemplo de cómo ejecutar una consulta HQL desde el código Java sobre la
tabla DEPARTAMENTOS: