EJB-PERSISTENCIA

EJB-PERSISTENCIA


JavaBean

Un JavaBean o bean es un componente hecho en software que se puede reutilizar y que puede ser 
manipulado visualmente por una herramienta de programación en lenguaje Java.

EJB (Enterprise JavaBean)

Es un "componente de negocio", es decir, un programa java que realiza alguna gestión compleja y que espera a que otro programa cliente lo invoque

Para su funcionamiento, se requiere que se instale en un servidor, que es otro software encargado de controlar el acceso al EJB, la seguridad, las transacciones y otras tareas. Gracias a esta doble relación, los EJBs ofrecen un alto rendimiento y disponibilidad a las aplicaciones distribuidas (en varias capas) que pueden ser o no de tipo WEB.

Lógica de Negocio

Son rutinas que realizan entradas de datos, consultas a los datos, generación de informes y más específicamente todo el procesamiento que se realiza detrás de la aplicación visible para el usuario (Backend). 
El software se comunica de manera amigable con el usuario a partir de la interfaz, pero el procesamiento de los datos capturados como entrada y la posterior entrega de resultados al usuario por medio de la interfaz, es conocido como la Lógica de Negocio.

Persistencia

La persistencia es la acción de preservar la información de un objeto de forma permanente (guardado), pero a su vez también se refiere a poder recuperar la información del mismo (leerlo) para que pueda ser nuevamente utilizado.
La persistencia permite almacenar, transferir y recuperar el estado de los objetos. Para esto existen varias técnicas:

  • Serialización
  • Motores de persistencia
  • Bases de datos orientadas a objetos

EJB de entidad (entity EJB)

El objetivo de un Enterprise JavaBean de Entidad es encapsular los objetos del lado del servidor que almacena los datos. Los EJB de entidad presentan la característica fundamental de la persistencia: (nota: en la documentación de Java para JEE 5.0, los entity beans desaparecen, porque son remplazados por Java Persistence API o JPA).

  • Persistencia gestionada por el contenedor (CMP): el contenedor se encarga de almacenar y recuperar los datos del objeto de entidad mediante el mapeo o vinculación de las columnas de una tabla de la base de datos con los atributos del objeto.
  • Persistencia gestionada por el bean (BMP): el propio objeto entidad se encarga, mediante una base de datos u otro mecanismo, de almacenar y recuperar los datos a los que se refiere, por lo cual la responsabilidad de implementar los mecanismos de persistencia es del programador.

EJB Dirigidos por Mensajes (Message-driven EJB)

Son los únicos beans con funcionamiento asíncrono. Usando el Java Messaging System (JMS), se suscriben a un tema (topic) o a una cola (queue) y se activan al recibir un mensaje dirigido a dicho tema o cola. No requieren de su instanciación por parte del cliente.

 


Clase Entidad (Entity Class)

Es una clase de Java que deseamos persistir en una base de datos relacional. Es utilizada para mapear los atributos de una entidad de una base de datos relacional para ser utilizados en nuestra clase de Java.

PASOS PARA CREAR UNA CLASE ENTIDAD


WAR (Web application ARchive)

Es un archivo JAR utilizado para distribuir una colección de JavaServer Pagesservlets, clases Java, archivos XML, bibliotecas de tags y páginas web estáticas (HTML y archivos relacionados) que juntos constituyen una aplicación web.


Pool de Conexiones 


Al realizar una conexión con una base de datos para una aplicación sencilla, es usual tener una clase con nuestra conexión; un DriverManager a quien le damos la dirección de la base de datos, el usuario y la contraseña. Para aplicaciones sencillas esto puede ser útil, pero para apliciones más complejas se complica. Unos de los problemas son: 

  • Abrir una conexión, realizar cualquier operación con la base de datos y cerrar la conexión puede ser lento. La apertura de las conexiones puede tardar más que la operación que queremos realizar. Es mejor, por tanto, abrir una o más conexiones y mantenerlas abiertas.
  • Mantener una única conexión abierta compartida puede traernos problemas de concurrencia de hilos. Si varios hilos intentan hacer una operación con la conexión sin sincronizarse entre ellos, puede haber conflictos.

Para evitar estos problemas, lo mejor es no abrir nosotros directamente la conexión con el DriverManager, sino delegar esta tarea en una clase que implemente la interface javax.sql.DataSource y, por supuesto, elegir una implementación adecuada para nuestros propósitos.




Una implementación interesante de estos DataSource son los "Pool" de conexiones. Estos consisten en un agrupamiento o conjunto de conexiones abiertas, realizadas a nuestra base de datos y que pueden ser reutilizadas de una petición a otra. La idea es la siguiente: Le pedimos al pool una conexión. Este busca una que esté libre y nos la da, apuntando que la tenemos nosotros y que deja de estar libre. Nosotros realizamos nuestra operación (consulta, inserción, borrado, ...) y cerramos la conexión. El pool recibe esta petición de cierre y NO cierra la conexión, sino que la deja abierta y la vuelve a marcar libre para el siguiente que la pida.


Java Timer Service 

Es una herramienta de EJB que es utilizada para programar tareas que tienen que ocurrir en cierta fecha, hora o en determinado intervalo de tiempo.




Dependency Injection (Inyección de Dependencia)

Es un patrón de diseño orientado a objetos, en el que se suministran objetos a una clase en lugar de ser la propia clase la que cree el objeto.


@EJB

Esta anotación es utilizada para especificar o inyectar una dependencia como una instancia de un EJB en otro EJB.

@Resource

Esta anotación es utilizada para inyección de dependencias de fuentes como DataSource, objetos JMS, etc.


Interceptors

Un interceptor es un método al que se llama automáticamente por el contenedor EJB cuando se invocan los métodos de negocio de Enterprise JavaBeans (EJB) o se producen sucesos de ciclo vital de un EJB.

@AroundInvoke
public Object methodInterceptor(InvocationContext ctx) throws Exception {
   System.out.println("*** Intercepting call to LibraryBean method: " 
   + ctx.getMethod().getName());
   return ctx.proceed();
}

@AroundInvoke

Esta anotación es utilizada para especificar que un método es interceptor.

Objetos Integrados

Los objetos integrados son Java beans que encapsulan interacciones con una aplicación host. Estos son utilizados cuando la aplicación se conecta con más de una aplicación host o cuando se desea encapsular las interacciones del host en aplicaciones EJB o servios web.


Comentarios

Entradas populares