Hibernate es una
herramienta de mapeo objeto – relacional de software libre para la plataforma
Java (y para .Net también pero llamándose NHibernate).
Hibernate nos facilita el mapeo de atributos entre una base
de datos relacional tradicional, como puede ser una basada en MySQL por
ejemplo, y el modelo de objetos de una aplicación, mediante archivos XML o
anotaciones en los beans de las entidades que permiten establecer estas
relaciones.
Es decir, busca solucionar el problema de la diferencia
entre los dos modelos de datos que coexisten en una aplicación: El que usa la
memoria del ordenador, que estará orientado a objetos, y el usado en las bases
de datos, modelo relacional.
Se “monta” una capa intermedia que permite manipular la
información de la base de datos operando sobre objetos, con todas las características
que tiene la programación orientada a objetos.
Convertirá los datos en tipos utilizados por Java y
definidos por SQL, generará las sentencias SQL liberando al desarrollador de su
manejo manual y mantendrá la portabilidad entre todos los motores de bases de
datos, eso sí, con el coste de incrementar (ligeramente) el tiempo de ejecución.
Instalar y configurar Hibernate en Eclipse
Lo primero que haremos será abrir Eclipse e ir a Help à
Install new software
Añadiremos el repositorio de JBoss, que es el oficial para
descargar e instalar Hibernate. En Work
with escriremos la URL desde la que bajaremos Hibernate.
En mi caso estoy trabajando con Eclipse Mars así que mi URL será:
http://download.jboss.org/jbosstools/updates/stable/mars
Si fuese Neon sería:
http://download.jboss.org/jbosstools/updates/stable/neon/
Y si no es ninguna de ellas, podemos buscar nuestra versión en el directorio padre:
http://download.jboss.org/jbosstools/updates/stable/
Entramos en la carpeta que corresponda y copiamos la URL.
Hecho esto, pulsamos Add y de nombre indicaremos, por ejemplo, Hibernate.
En mi caso estoy trabajando con Eclipse Mars así que mi URL será:
http://download.jboss.org/jbosstools/updates/stable/mars
Si fuese Neon sería:
http://download.jboss.org/jbosstools/updates/stable/neon/
Y si no es ninguna de ellas, podemos buscar nuestra versión en el directorio padre:
http://download.jboss.org/jbosstools/updates/stable/
Entramos en la carpeta que corresponda y copiamos la URL.
Hecho esto, pulsamos Add y de nombre indicaremos, por ejemplo, Hibernate.
Pulsamos OK y
dejamos que se cargue el listado de software disponible. Una vez listo,
elegiremos para instalar JBoss Data
Services Development à Hibernate.
La instalación no tiene mayor misterio que aceptar términos
de licencia y esperar a que finalice. Cuando lo haya hecho nos pedirá
reiniciar, y para comprobar si se ha instalado correctamente, nos vamos a Window à
Open Perspective. Si tenemos la opción de elegir la perspectiva Hibernate, es que está bien.
El siguiente paso es mera comodida para el desarrollo de Hibernate
sobre MySQL. Cogeremos el conector MySQL (en mi caso mysql-connector-java-5.1.36-bin.jar)
y lo llevaremos a una carpeta en la carpeta de Eclipse, para tenerlo más a
mano.
A continuación definiremos el driver agregándolo como una
librería propia de Eclipse. Iremos a Window
à
Preferences à Data Management à
Driver Definition.
Pulsamos sobre Add y
realizamos la siguiente configuración:
En la pestaña Name/Type
elegimos el Vendor Filter MySQL, y como Database seleccionamos la versión 5.1.
Nos movemos a la pestaña JAR List para referenciar conector que hemos dejado en el anterior
paso.
Ya tendremos un archivo con el conector de MySQL. Lo
eliminamos (selecciona y marca Remove
JAR/Zip…). Pulsa sobre Add JAR/Zip
y elige el conector que dejamos en la carpeta de Eclipse.
Y aceptamos los cambios pulsando OK
.
Configurando opciones para proyecto Hibernate.
Hasta aquí, los pasos son comúnes para todos los proyectos y sólo deberemos repetirlos una vez, pero a partir de ahora, todos los pasos deberemos configurarlos para cada proyecto Hibernate que iniciemos.
Creamos un proyecto de Java nuevo (el mío se llamará ProyectoHibernate1)
y nos vamos, sobre las opciones del botón derecho, a Build Path à Add libraries
Elegimos el tipo de librería Connectivity Driver Definition
Y en la definición de drivers disponible marcamos MySQL JDBC Driver y pulsamos Finish.
Hecha esta conexión, ahora agregaremos las librerías Hibernate, que previamente habíamos
descargado de http://hibernate.org/orm/.
Para ello nos creamos, dentro de nuestro proyecto, una nueva
carpeta llamada lib yendo, sobre el
botón derecho, a New à
Folder
Ahora es cuando cojemos el comprimido descargado de Hibernate, lo descomprimimos y copiamos
(arrastrar y soltar, por ejemplo) los .jar
contenidos en la carpeta /lib/required
a nuestra carpeta lib.
A continuación habrá que referenciar éstas librerías para
que funcionen.
Sobre el proyecto, vamos a botón derecho à Build Path à
Configure Build Path. Iremos a la pestaña Libraries y elegiremos la opción Add JARs, seleccionando todos los contenidos en la carpeta lib.
Ahora, sobre el proyecto, botón derecho y nos vamos a New à
Other à
Hibernate Configuration file y le indicamos que lo almacene en src del proyecto.
Pulsamos Next y
procederemos a su configuración. Realmente puedes picar todo el código a mano,
a través de XML, pero encuentro mucho más sencillo hacerlo así.
A lo que iba. En Session
Factory name le indicaremos el nombre de nuestra sesión, por ejemplo ConexionHibernate.
En Database dialect
(el ‘idioma’ que hablará nuestra base de datos) seleccionamos MySQL.
Y como Driver class
elegimos com.mysql.jdbc.Driver.
La siguiente configuración, Connection URL, es para indicar la URL a la que conectarnos.
Tenemos varios ejemplos, y basta con cargar uno y modificar los parámetros
entre paréntesis. Yo me conectaré a una base de datos local ya predefinida, ejemplo, con lo cual puedo pasarle la
URL completa directamente aquí. Si no en el campo Default Schema podría indicar la base de datos con la que arranco
por defecto (o no indicar nada y realizar sin más la conexión). Por lo tanto,
mi Connection URL es jdbc:mysql://localhost/ejemplo.
Y para acabar, indicaremos el usuario y contraseña con la
que realizaré la conexión. En mi caso, Username
root y Password lo pasaré vacío.
Y pulsamos Finish.
El siguiente paso es crear un archivo de configuración de
consola. Nos vamos a New à
Other à
Hibernate à Hibernate Console
Configuration.
Y dejamos las opciones por defecto
Cuando pulses Finish no
verás el nuevo archivo, no te preocupes, pues solo es visible en la perspectiva
de Hibernate.
Lo siguiente será generar un archivo para la ingeniería
inversa (la que transforme los datos de la base de datos relacional en objetos
POO). Vamos a New à
Other à
Hibernate à Hibernate Reverse Engineering
File.
De nuevo, deberemos indicar la ruta donde se almacena (parent
folder), marcando la carpeta src de
nuestro proyecto, y el nombre lo dejamos por defecto.
Pulsamos Next y
deberemos configurar que tablas queremos que traduzca a objetos. Lo primero es
indicar que consola vamos a utilizar (Console
Configuration). Solo tenemos una creada, ProyectoHibernate1, la que hicimos anteriormente, así que la
escogemos y pulsamos Refresh.
Nos mostrará las bases de datos cargadas con sus
respectivas tablas. Aquí escogemos las que queramos traducir, por así decirlo,
y pulsamos en Include. Yo voy a
agregar las dos de mi base de datos, así que quedaría tal que así.
Y ya, para ir acabando esta configuración inicial, deberemos
indicar a Hibernate que genere el código
en Java. Nos iremos a Run à
Hibernate Code Generation à Hibernate Code
Generation Configurations… llegando a la siguiente pantalla
Hacemos doble click sobre Hibernate Code Generation y nos aparecerá una nueva configuración.
En la pestaña Main
tendremos que indicarle el nombre de esta configuración (Name). Puedes poner el que quieras, yo lo he llamado ConfiguracionCodigoProy1, porque poner
solo Hola me parecía obscenamente
corto.
Seleccionamos también una configuración de consola (Console configuration), que será la
creada previamente, ProyectoHibernate1.
Marcamos el checkbox de Reverse
engineer from JDBC Connection e indicamos la ruta de salida de los ficheros
(Output directory), que será la
carpeta src de nuestro proyecto, y el
paquete donde lo meteremos. Puede ser cualquier nombre (o ninguno), pero yo he
elegido llamar al paquete, desde la opción Package,
primero.
Pulsamos sobre Setup
de reveng.xml y nos aparcerá un mensaje
preguntando si queremos crear un fichero nuevo o elegir uno que ya exista.
Elegimos esta última opción.
Y seleccionamos el fichero que habíamos creado en pasos
anteriores.
Esta pestaña quedará así
Y nos movemos a la pestaña Exporters, donde deberemos marcar las opciones:
- Domain code (.java)
- Hibernate XML Mappings (.hbm.xml)
- Hibernate XML Configuration (.cfg.xml)
Aplicamos cambios y pulsamos Run.
Hecho esto, ya tenemos una configuración corercta para
trabajar con Hibernate.
Este comentario ha sido eliminado por el autor.
ResponderEliminarMuchas gracias
ResponderEliminarNo hay de que
EliminarEstupendo y genial. Me aclara muchas dudas. Gracias amigo.
ResponderEliminarA ti por comentar. Para eso está la información, para compartirla siempre ;)
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola , que tal ?
ResponderEliminarSabes que segui los pasos tal cual pero alo ultimo cuando doy RUN me parece este mensaje:
"lauching 'configuration.proecto.hibernate' has encounteres a problem
org.hibernate.console.HibernateConsoleRuntimeException: Received a NoClassDefFoundError, probably the console configuration
classpath is incomplete or contains conflicting versions of the same class"
si me podrias ayudar te lo agradezco mucho.
Saludos
Hola, tu problema es una incompatibilidad de versiones de Hibernate.
EliminarDebes asegurarte de haber bajado la última versión del plugin de Hibernate (yo trabajé con Mars en este tutorial, desconozco si tu estás con
Eclipse Neon. En cuyo caso deberás usar este enlace para bajarte el plugin:
http://download.jboss.org/jbosstools/updates/stable/neon/
Si no puedes comprobar todas las versiones disponibles aquí:
http://download.jboss.org/jbosstools/updates/stable/
Después de eso, debes comprobar que en el Hibernate Configuration File y el Hibernate Console Configuration las versiones de Hibernate coinciden y que los dropdown están seleccionados con la última versión disponible.
Voy a actualizar el post para indicar el link correcto, no me había percatado si no llegas a escribir.
Espero te funcione, si no seguiremos buscando solución.
Saludos
A mi me mandaba un error similar, lo resolvi de la siguiente manera:
EliminarEn el ultimo paso cuando creas: Hibernate Code Generation y esta la opcion reveng.xml no le pongas nada dejalo en blanco.
Desconozco porque el error se quita, pues tambien soy nuevo en hibernate. Pero espero ayudar como otros tantos me han ayudado en
internet
salu2
Muchas gracias por tu trabajo !
ResponderEliminarHola Jose Ignacio, primero darte las gracias por compartir la información y segundo, tengo el mismo problema que el compañero Jaime. Utilizo Eclipse Mars y descargué Hibernate desde el enlace que facilitaste. Las versiones de Hibernate Configuration File e Hibernate Console Configuration es la misma, la 5.1. Y la versión de Hibernate que descargué para importar los jars de la carpeta lib es la version 5.2.6.Final.
ResponderEliminar¿Debería haberme descargado la 5.1.3.Final en lugar de la 5.2.6.Final? Quizás sea ese el problema.
Gracias por compartir!
En este caso también podría deberse al mismo problema, ya que tanto la versión de los jar importados como librerías y las versiones puestas en la configuración de Hibernate deben coincidir.
EliminarLa verdad que desconozco si hay que modificar algún extra de la configuración de Eclipse con el salto a la versión 5.2.x porque no he realizado ninguna prueba, pero si no se soluciona usando la versión 5.1, puedes revisar también que tu sistema cumple los requisitos para emplear Hibernate.
-> Java 8
-> JDBC 4.2
Una última opción si quieres emplear la 5.2 y en la pantalla de configuración no te sale esa versión es generar la configuración a mano. Puedes seguir la documentación oficial: http://docs.jboss.org/hibernate/orm/5.2/quickstart/html_single/
Muchísimas gracias, Jose Ingacio. Es todo un placer encontrar aportes de gente como tú.
ResponderEliminar¡Suerte!
Gracias! :)
EliminarNo me aparece la opción MySql al importar las librerias :(
ResponderEliminarAlguna idea?
Si no te aparece en ese caso no te preocupes. Solo elije la pestaña Add JAR/Zip y selecciona el JAR que pusiste en la carpeta de Eclipse.
EliminarCuando referencies esa ruta podrás seguir trabajando
no me aperecen las tablas al darle refresh donde las debo crear estoy en la parte de "configure tables filter" o en donde debo de crear las tablas
ResponderEliminarAsegurate de haber seguido correctamente los pasos anteriores y de que estás usando la consola que se ha configurado previamente.
EliminarSi sigue sin funcionar, deberás comprobar que puedes realizar consultas a tu servidor de bases de datos, porque es posible que lo que te esté fallando sea la conexión con el mismo.
Puedes hacerlo creando una pequeña clase que te haga un simple select.
Si todo eso te funciona y sigues con el mismo problema, vuelve a escribir diciendo que configuración y que versión de Hibernate y SQL tienes y tratamos de resolverlo.
Saludos
Saludos José! Muy buen tutorial, solo que en mi ecplipse no me aparece la opción "Hibernate Code Generation", sólo aparece " Hibernate Console Configuration". Sabes a qué se debe esto?
ResponderEliminarEsa opción solo está disponible en la perspectiva de Hibernate. Si estás en perspectiva Java no la podrás ver a. O ser que vayas, en preferencias, a:
EliminarCustomize perspective (current perspective) -> Command groups availability y marques el check de Hibernate Code Generation
Este comentario ha sido eliminado por el autor.
ResponderEliminarMuchas gracias José, funciono impecablemente en eclipse Luna, por el tema de las dependencias las solvente con Maven.
ResponderEliminarSí, hiciste bien. Sin duda es mucho mejor así que manualmente, pero de cuando escribí esta entrada ni siquiera sabía lo que era Maven XD
EliminarWoo!!! por fin alguien que explica a la perfección. Mil Gracias, me funcionó perfecto.
ResponderEliminarGracias a ti por comentar. Me alegra que te fuese útil :)
EliminarHola.
ResponderEliminarEstoy con Eclipse Photon.
Al intentar crear una Hibernate Console Configuration me da el error Classpath must be ser or restore to default y no me deja crearlo.
Voy a la pestaña classpath y lo restauro pero sigue sin dejarme.
Probé a introducir el conector mysql y las librerías de hibernate pero tampoco lo soluciono.
Muchas gracias,
Hola!
EliminarEl error que me comentas se produce cuando no has importado correctamente el JAR externo al classpath.
Asegurate de que el paso de "Nos movemos a la pestaña JAR List para referenciar conector que hemos dejado en el anterior paso.
Ya tendremos un archivo con el conector de MySQL. Lo eliminamos (selecciona y marca Remove JAR/Zip…). Pulsa sobre Add JAR/Zip y elige el conector que dejamos en la carpeta de Eclipse." lo estás llevando a cabo correctamente.
Si es así, vuelve y buscamos otras soluciones.
Saludos! :)
gracias, me ha sido de gran ayuda
ResponderEliminarGracias, perfecto a la primera. Había probado otros tutos y na de na.
ResponderEliminar