¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Desarrollo informático
  3. Los EJB entity
Extrait - Desarrollo informático Aprenda a diseñar antes de programar
Extractos del libro
Desarrollo informático Aprenda a diseñar antes de programar Volver a la página de compra del libro

Los EJB entity

Introducción

1. Definición

Un EJB Entity es una clase que se corresponde con una tabla de una base de datos relacional. Una instancia de esta clase se corresponde con una fila de la tabla.

Los EJB Entity gestionan el mapping objeto/relacional.

2. Framework de persistencia

Un «framework» es un conjunto de herramientas y librerías útiles para el desarrollo. En este sentido, JEE es un framework.

Algunos frameworks, llamados frameworks de persistencia, están especializados en el mapping objeto/relacional. Permiten generar las clases Java a partir de las tablas de la base de datos.

A continuación se muestran algunos frameworks de persistencia populares: Toplink, Hibernate, EclipseLink, etc.

3. Contexto de persistencia

Para realizar el trabajo de mapping objeto/relacional, el contenedor de EJB necesita conocer cierta información que forma el contexto de persistencia:

  • Los EJB Entity.

  • ¿Cuáles son los objetos que se van a utilizar?

  • La fuente de datos.

  • ¿Cuál es la base de datos que se va a utilizar?

  • En general, la fuente de datos es un pool de conexiones. Es el pool el que conoce la base de datos.

  • El proveedor de persistencia.

  • ¿Cuál es el framework que ha generado los EJB?

El rol del contexto de persistencia es:

  • Saber dónde y cómo almacenar la información.

  • Garantizar la unicidad de las instancias de cada entidad persistente (objeto relacionado con un identificador...

Ejemplo completo: gestión de los contactos

1. Objetivo

En todos los proyectos de gestión de los contactos anteriores, utilizamos las clases que se han desarrollado en nuestro trabajo sobre el mapping objeto/relacional. Estas clases se agrupan en los siguientes paquetes:

images/2_307.png
  • Las clases Contacto, Sector, Pago se corresponden con las tablas CONTACTO, SECTOR, PAGO de la base de datos. Estas clases están en el paquete businessMapping.

  • Las clases ContactoDAO, SectorDAO, PagoDAO gestionan las entradas/salidas en la base para cada una de las clases de businessMapping. Estas clases están en el paquete daoJdbcMapping.

Vamos a sustituir todas estas clases por clases de tipo EJB Entity, generadas por un framework de persistencia.

2. Generación de las clases EBJ Entity

Este procedimiento cuenta con varias etapas automatizadas, que dependen del EDI utilizado. Sea cual sea el entorno, para generar las clases correspondientes a las tablas es necesario:

  • indicar el pool de conexiones relacionado con la base de datos: jndiPoolGnmiMySql,

  • elegir las tablas que hay que «mapear» (para las que se van a crear las clases EJB Entity): CONTACTO, SECTOR, PAGO,

  • elegir un nombre de paquete para estas clases: tablas,

  • elegir el proveedor de persistencia (framework): EclipseLink por ejemplo para NetBeans 8,

  • elegir el tipo de carga para los objetos relacionados. La opción por defecto se corresponde en general con el lazy loading. Con esta opción, los objetos relacionados con un objeto Contacto (la lista de sus pagos, por ejemplo) solo se cargarán cuando se necesiten.

El framework genera clases cuyo código se parece mucho al de nuestras clases Contacto, Sector y Pago.

Sin embargo, este código está «abarrotado» de anotaciones. Son las que permiten al contenedor de EJB hacer el enlace con la base de datos. Estas anotaciones juegan el rol de las clases DAO.

Más adelante presentaremos la clase generada y el rol de las principales anotaciones.

a. Clase Contacto generadas

package tablas;  
  
. . . 

La declaración de la clase es anterior a las anotaciones:

La anotación @Entity indica que la clase es un EJB3 Entidad (mención obligatoria).

La anotación @Table permite especificar el nombre de la tablas del SGBD correspondiente a la clase. Esta anotación es opcional: por defecto, es el nombre de la clase.

@Entity  
@Table(name = "contacto")  ...

Trabajo práctico: Proyecto GestionContactoEJBEntidad

1. Objetivos

  • Utilizar el EJB Session MappingEntidad para acceder a la base de datos.

  • Arquitectura de la aplicación:

images/3_307.png

2. Tema

a. Para realizar

Se retoma la aplicación GestionContactoEJB del capítulo en los EJB Session.

  • Adaptar los programas ServletControlador, TratamientoInicio y TratamientoRegModif

  • Modificar ligeramente las JSP: las clases Contacto, Sector, Pago provienen del paquete tables y no del paquete businessMapping. Modificar algunos «import» de los JSP…

b. Diagrama de se ...