Desarrollo de Entity Beans

0
42237

Entity Beans en J2EE RI

Hemos comentado que a partir de ahora vamos a subir el nivel de los
tutoriales …. pero pretendemos hacerlo poco a poco.

Esta vez, vamos a ampliar el tutorial anterior, realizando algunos cambios,
para crear un ejemplo básico de un EJB de entidad, que desplegaremos en la
implementación de referencia (RI).

El código aquí mostrado no debeis usarlo como referencia sobre buenas
prácticas en el desarrollo JE22 porque en siguientes tutoriales nos centraremos
precisamente en esto…. aplicar algunos patrones para ir dando forma a nuestras
aplicaciones.

Básicamente, un EJB de entidad, tiene los mismos elementos que un EJB de
sesión… aunque con algunos matices:

  • Debemos crear un interfaz Home donde especificaremos como crear el EJB. En
    este caso es más importante porque probablemente sea el encargado de
    almacenar de modo persistente nuestro EJB.
  • Un interfaz remoto, con los métodos que operan sobre los atributos
    privados
  • Un Bean que posee los métodos obligatorios para que nuestro EJB se
    comporte correctamente (al implementar el interfaz EntityBean)

Hay dos modos de construir un EJB de entidad, haciendo que la persistencia la
gestione el propio EJB o haciendo que la gestione automáticamente en
contenedor. Hemos elegido el primer método para entender, un poco, que esta pasando
por debajo cuando usemos el segundo tipo.

Realmente lo que queremos comprobar es como el contenedor gestiona los
eventos …..  y crear nuestro esqueleto de referencia.

 

Creamos el interfaz Home del Entity Bean

Definimos un método create para inicializar en
EJB y findByPrimaryKey para poder localizarlo
(obligatorio). El método findByRango solo lo introducimos para futuros
desarrollos

Creamos el interfaz remoto

En él, definimos todos los métodos get/set para poder acceder a nuestros
atributos

Creamos el Entity Bean

Separamos los eventos del EJB, de los métodos que realizan las lecturas y
escritura, para mayor claridad.

Hemos forzado el código para la simulación de la recuperación de un
elemento con clave primaria 22

La estructura de nuestro proyecto tiene el siguiente aspecto

Invocamos desde el EJB de sesión al de entidad

Desde un metodo del EJB de sesión, ejecutamos la llamada al de Entidad.

Deberiamos hacernos una pregunta. ¿ Como la llamada a findByPrimaryKey
retorna un iFacturaItem?

 

iFacturaItem miFactura = miHome.findByPrimaryKey(«22»);

Si la funcion el el Bean .. retorna un entero ?? …

 public String ejbFindByPrimaryKey(String
pParam) throws FinderException 

Esto significa, que el contenedor lo hace por nosotros ….

 

Comprobar el funcionamieto

Si vemos la salida…. sin estar conectando realmente con una base de
datos … podemos ver que hace el contenedor de EJBs …

Sobre todo debemos prestar atención a la última linea ….. para ver como
el contenedor hace cosas por nosotros

Podeis descargar el código completo

Desplegar la aplicación

Asignamos los nombre JNDI (hemos cambiado también el de sesión).

Podemos ver que desde el EJB de sesion hemos encontrado el de entidad como:

Object objetoGenerico = contexto.lookup(«java:comp/env/ejb/entidadfactura«);

 Definimos el Bean como de Entidad e identificamos sus interfaces

La persistencia la maneja el Bean

La seguridad de momento la dejamos a un lado (todo llegará)

Y redesplegamos

Ya estamos en marcha de nuevo ….. con un entorno más
completo. A partir de ahora, analizaremos lo que hemos hecho y como mejorarlo.

Preguntas

Hay algunas preguntas que nos debemos hacer

  • ¿Por qué se crea el EJB de entidad desde el de sesion?

  • ¿Por qué hemos creado una clase Factura que es la que se
    pasa como parámetro?

  • ¿La aplicación tiene un alto o bajo nivel de acoplamiento?

  • ¿Si despliego los ejbs y tengo que cambiar sus nombres …
    en cuantos sitios debo tocar?

  • ¿Realmente estoy programando orientado a objetos o estoy
    complicando innecesariamente la aplicación con interfaces y objetos sin
    realmente obtener las ventajas de este tipo de programación?

Muchas veces se pone de moda una tecnología y se usa… sin ser
muy consciente del objetivo que busca

A partir de ahora, uno de nuestros objetivos será responder a
estas preguntas  ….

Sobre
el Autor ..

Dejar respuesta

Please enter your comment!
Please enter your name here