Generar entidades a partir de la BBDD

PEDRO DELGADO YARZA 2014/01/29 13:50

Una vez tengamos definidas las tablas de base de datos podemos generar las clases Java equivalentes (entidades) a partir del esquema sin necesidad de codificar nosotros las clases. Para ello haremos uso de dos librerías necesarias para tal tarea: la consola de Hibernate y el generador JPA.

La consola de Hibernate nos permitirá definir un canal de conexión con la base de datos a nivel de proyecto, que será usado por el generador JPA. Es importante no confundir con la fuente de datos, este canal de conexión sólo es aplicable en nuestro IDE de desarrollo y no en el despliegue del proyecto.

El generador JPA conectará con la base de datos, recorriendo el esquema y generando las clases Java equivalentes a las tablas, así como sus métodos y propiedades.

El primer paso que debemos dar es crear la configuración necesaria para conectar con la base de datos. Para ello lo primero que tenemos que hacer es abrir la vista de eclipse de la consola de Hibernate siguiendo los siguientes pasos:

En eclipse hacemos clic en Window » Show View » Other

Una vez seleccionada la opción se nos abrirá una ventana en la que nos permitirá buscar qué vista queremos mostrar. En el campo de filtrado escribirmos hibernate y en la lista que nos aparece a continuación seleccionamos Hibernate Configurations:

Tras darle a OK nos aparecerá en nuestro menú de vistas la vista de configuración de Hibernate:

Una vez tengamos esta vista podremos iniciar la configuración de la conexión con la base de datos. El primer paso es abrir el wizard de configuración, para ello hacemos clic derecho sobre la vista de Hibernate y, en el menú contextual que aparece, hacemos clic sobre Add Configuration..

Una vez dentro del Wizard, selecionamos el botón de radio JPA (jdk1.5+) y en el combo Hibernate version selecionamos 4.0. Ahora, tenemos que crear una nueva conexión a la base de datos. Para ello hacemos clic en el botón New que está en el grupo de configuración Database connection.

Si utilizas el IDE FundeWeb 2.1, la versión de Hibernate tiene que ser la 4.3.

En el nuevo Wizard que nos aparece, escribimos en el filtro oracle y seleccionamos la opción que nos aparece Oracle Database Connection. Tras ello pulsamos en Next

En la siguiente pantalla establecemos la configuración de la conexión de la base de datos, de igual manera que lo hicimos cuando configuramos el DataSource en el servidor. Tras ello, probamos la conexión pulsando Text Connection y en caso de que funcione correctamente pulsamos el botón Next

Una vez creada la fuente de datos, volvemos al Wizard inicial, esta vez podemos rellenar todos los campos:

  • Project: Plusamos en Browse y buscamos de nuestros proyectos el módulo web del que nos interese (nombreProyecto-web).
  • Database connection: Seleccionamos en el combo la fuente de datos que hemos definido anteriormente
  • Persistence unit: Pulsamos en Browse y se nos mostrará un listado de las unidades de persistencia existentes en el proyecto indicado en el apartado de Project (por defecto sólo habrá una defaultPU) seleccionamos la que aparece por defecto, salvo que hayamos creado nosotros una nueva o tengamos varias en el proyecto.

Para aplicaciones FundeWeb 1.x migradas a Weblogic 12, el proyecto a seleccionar es el del Módulo EJB (nombreProyecto-ejb).

Tras seleccionar todos esos apartados pulsamos en Apply y posteriormente en OK.

El resultado final de todo el proceso nos incluirá en nuestra vista de Hibernate un esquema similar a este:

En este punto ya tenemos configurada nuestra conexión Hibernate con base de datos y sólo queda lanzar el generador JPA para generar nuestras entidadas. Para ello hacemos click derecho sobre el módulo web de nuestro proyecto (web_nombreProyecto) y en el menú desplegable que aprece buscamos lo siguiente: JPA Tools » Generate Entities from Tables

Una vez seleccionado se nos muestra un menú que nos pide la configuración para lanzar el generador. Deberemos definir los siguientes campos:

  • Package: Nombre del paquete donde queremos que se generen las clases.
  • Use Console Configuration: Debe estar marcado.
  • Console configuration: Deberemos seleccionar la consola Hibernate que definimos en el apartado anterior.

Tras rellenar los campos pulsamos Finish y esperamos a que la ventana se cierre. Tras ello tendremos nuestras clases generadas dentro del paquete que indicamos.

Dialect Class Not Found

Si nos aparece el siguiente error

 Error en generación de JPA por FundeWeb Dialect

Tenéis que hacer lo siguiente:

  • Abrir el fichero persistence.xml que se encuentra en la ruta src/main/reosurces/META-INF.
  • Buscar la propiedad hibernate.dialect y cambiar su valor por org.hibernate.dialect.Oracle10gDialect. Guardar el valor anterior, ya que una vez realizada la generación, volváis a restaurar el valor que tenia el fichero.
  • fdw2.0/fundeweb2.0/gt/generar_entidades_a_partir_de_las_tablas_de_base_datos.txt
  • Última modificación: 16/02/2021 13:47
  • por JUAN MIGUEL BERNAL GONZALEZ