4. acceso a datos

27
ACCESO A DATOS

Transcript of 4. acceso a datos

Page 1: 4. acceso a datos

ACCESO A DATOS

Page 2: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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)

Contenidos de la unidad

Page 3: 4. acceso a datos

UT 4. HERRAMIENTAS 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.

1. Concepto de mapeo objeto‐relacional (ORM)

Page 4: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (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

2. Características de las herramientas ORM

Page 5: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (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.

2. Características de las herramientas ORM

Page 6: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (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:

3. Instalación y configuración de una herramienta ORM

Page 7: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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.

3.1. Instalación y configuración de una herramienta ORM. Instalación del plugin.

Page 8: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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

3.1. Instalación y configuración de una herramienta ORM. Instalación del plugin.

Page 9: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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.

3.2. Instalación y configuración de una herramienta ORM. Configuración del driver MySQL.

Page 10: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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.

3.2. Instalación y configuración de una herramienta ORM. Configuración del driver MySQL.

Page 11: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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.

3.3. Instalación y configuración de una herramienta ORM. Configuración de Hibernate.

Page 12: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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.

3.3. Instalación y configuración de una herramienta ORM. Configuración de Hibernate.

Page 13: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

Desde la pestaña Source se puede editar el fichero XML cfg.xml generado:

3.3. Instalación y configuración de una herramienta ORM. Configuración de Hibernate.

Page 14: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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)

3.3. Instalación y configuración de una herramienta ORM. Configuración de Hibernate.

Page 15: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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.

3.3. Instalación y configuración de una herramienta ORM. Configuración de Hibernate.

Page 16: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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

3.4. Generar las clases de la base de datos.

En la siguiente ventana configuramos los siguientes campos:Console Configuration: seleccionamos ConfiguracionHibernateOutput directory: ha de ser la carpeta srcPackage: escribimos primeroReveng.xml: localizamos el fichero reveng.xml creado anteriormente. Se puede localizar pulsando en el botón Setup.

Page 17: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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.

3.4. Generar las clases de la base de datos.

Page 18: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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.

3.5. Primera consulta en HQL.

Page 19: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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 \eclipse\Hibernate

4.Desde la carpeta \eclipse\Hibernate\hibernate-distribution-3.6.10.Final\lib\required seleccionamos todos los ficheros y los copiamos a nuestra carpeta \eclipse\Hibernate

5.Desde la carpeta \eclipse\Hibernate\hibernate-distribution-3.6.10.Final\lib\jpa seleccionamos todos los ficheros y los copiamos a nuestra carpeta \eclipse\Hibernate

3.6. Programar con Hibernate en Eclipse.

Page 20: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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 \eclipse\Hibernate

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.

3.6. Programar con Hibernate en Eclipse.

Page 21: 4. acceso a datos

UT 4. HERRAMIENTAS DE MAPEO OBJETO RELACIONAL (ORM)

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.

3.6. Programar con Hibernate en Eclipse.

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

Page 22: 4. acceso a datos

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:

Page 23: 4. acceso a datos

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:

Page 24: 4. acceso a datos

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:

Page 25: 4. acceso a datos

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:

Page 26: 4. acceso a datos

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:

Page 27: 4. acceso a datos

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: