Hibernate - Toma de contacto

Esta serie de ejemplos es la que me ha servido para una primera toma de contacto con Hibernate.

https://es.wikipedia.org/wiki/Hibernate

He usado Netbeans 8.2 y JDK 8 en Windows 10. La base de datos es MySQL y la manipulo con MySQL Workbench, que es una de las herramientas que se instalan con el instalador automático

En este artículo vamos a crear un proyecto en java y a configurar Hibernate para que actúe entre la base de datos MySQL, que tenemos funcionando mediante el puerto 3306, y nuestro código en Java. Gracias a Hibernate trataremos la Base de Datos relacional como si fueran objetos.

Para ello comprobamos que tenemos el plugin Hibernate instalado en nuestro Netbeans.

Aquí aparece como instalado, pero si no lo estuviera lo podemos instalar desde este mismo menú.

Iniciamos el servicio de conexión a la BD

Introducimos contraseña. Al ser una BD en modo local no hay que configurar nada salvo comprobar el puerto.

Ya tenemos conexión a nuestra BD MySQL. La Base de Datos Empresaz es la que vamos a usar. Se puede ver de que trata exactamente en este repositorio: https://github.com/RadW2020/Hibernate-Toma-de-Contacto/blob/master/empresaz.sql

Conectamos

Nos pide contraseña de nuevo

Ya tenemos nuestro driver JDBC configurado y funcionando en nuestro proyecto de Netbeans. (En este punto he de decir que tuve problemas al cargar la base de datos y que luego el plugin Hibernate se configurara correctamente. Cualquier fallo que he podido encontrar lo he solucionado reiniciando Netbeans)

Creamos un proyecto nuevo y vacío. Y añadimos las librerías pertinentes.

Seleccionamos la más adecuada a nuestro proyecto.

El proyecto ya tiene las librerías cargadas.

Empezamos a crear los archivos de configuración Hibernate

El asistente de configuración ayuda a crear el archivo .cfg

Comprobamos nombre y carpeta de destino

Importante seleccionar la BD con la que vamos a trabajar.

Ya tenemos el archivo creado, en formato xml, que Netbeans nos muestra en modo gráfico para mayor comodidad.

Si se desea editar el archivo en modo texto se puede hacer sin problema.

Vamos a editar una propiedad. Para ello primero añadimos.

En este caso queremos ver todo el log de depuración resultante de ejecutar operaciones SQL por consola.

Esta opción de parser, en teoría viene implementada en Hibernate por defecto desde la versión 4.1. Aun así lo podemos activar por aquí.

Seguimos creando archivos Hibernate

En este caso el HibernateUtil, que nos proporciona una referencia al objeto SessionFactory para que cualquier clase tenga acceso al objeto sesión en la aplicación. Mas información en CursoHibernate.HibernateUtil

Seleccionamos nombre y paquete

Ya tenemos nuestro archivo creado automáticamente

Ahora vamos a por la ingeniería inversa de nuestra BD

Va a identificar las tablas de la BD a la que estamos conectados

Comprobamos nombre y directorio

Añadimos las tablas sobre las que vamos a trabajar

Este es el archivo generado por ingeniería inversa en modo texto.

Por último los POJOs y los archivos de mapeado

Definimos su propio paquete ya que nos generará una serie de archivos. Las clases java con sus atributos, constructores y métodos de get y set. Y los archivos xml de mapeado hibernate. Este binomio xml-ClasesDeJava mapea la base de datos relacional y genera una capa intermedia que trata la tabla de datos relacional como una tabla objeto-relacional. De esta forma nos podemos relacionar con la tabla como si fueran objetos Java. Hibernate puede generar autométicamente los constructores y los metodos get y set, después podemos implementar los métodos que creamos conveniente.

Ahora ya estamos listos para empezar a probar y crear métodos. Se pueden hacer consultas HQL desde Netbeans.

Probamos algo sencillo y comprobamos los datos de la tabla empleados

Podemos crear métodos para obtener listas de datos, como este, que muestra una lista de los departamentos

También se pueden insertar filas en la BD. El procedimiento es siempre parecido: se obtiene un objeto SessionFactory y abrimos una sesión. Se comienza el estado transacción. Se graban los datos (en este caso se crea un objeto departamento vacío y se le añaden los campos) y se graba. Finalmente la transacción se lleva a cabo con el commit().

Este podría ser un main en el que mostramos los departamentos, creamos un departamento nuevo, y comprobamos su inserción.

Esta es la salida por consola. Recuerda que tenemos el modo sql debug activo, por eso nos salen todos los mensajes de funcionamiento de hibernate.

En el siguiente artículo seguiré investigando cosas sobre Hibernate y probando sus funcionalidades.

Usaré este repositorio en Github para todo el código que se muestre. Así que si habéis intentado copiar los métodos y frustrado por que era una imagen, no desesperéis ;)

Saludos!