Diferencia entre Sesion y Entity

iago_f_b
15 de Octubre del 2003
Hola
¿ Como sería una definicion simple de un EJB? Con que finalidad se crearon? Se crearon únicamente por motivos de diseño?
¿Cual es realmente la principal diferencia entre los Sesion y los Entity Beans y cuando es mejor usar unos y otros?
A ver si me podeis aclarar el lio que tengo .

Gracias

Ken
15 de Octubre del 2003
Amos a ver si te puedo echar un cable... luego vendrán los puristas y se me echarán encima, pero voy a intentar explicarte estos conceptos:

EJB (Enterprise Java Beans): Son clases que sirven para ejecutar métodos remotos de un modo más abstracto que usando CORBA o RMI. Es un nivel más de abstracción, de modo que no te tienes que preocupar por muchos detalles, sólo de heredar de unas clases concretas o implementar determinados interfaces.

Cuando un sistema hace una llamada mediante EJB, básicamente el objeto que "hace el trabajo", que lleva la lógica de negocio, está en una máquina, mientras que la comunicación con la petición de servicio puede estar en otra. A ver si con un ejemplo:

Tengo una máquina malilla que sólo me va a servir de servidor WEB, y a ella tengo conectado un servidor de base de datos, responsable de llevar además todas las operaciones que tengan que ver con la base de datos, y otra máquina más que, en este ejemplo, se ocupará de hacer una serie de cálculos muy complicados...

Bien, supongamos que el cliente hace una petición al servidor (vía web). El Servidor ve que tiene que hacer unos cálculos, y sacar unos registros de la base de datos... pues lo hace, llamando a clases que implementan interfaces EJB, de modo que a todos los efectos, los cálculos "parece" que están hechos desde el mismo sitio, pero realmente el servidor web ejecuta los cálculos en la máquina que corresponde, obteniendo el resultado. Con él, llama a la Base de Datos del mismo modo, como si estuviera en esa misma máquina, pero el que hace el trabajo de sacar los datos y demás es la segunda máquina del ejemplo, la que tiene el servidor de Base de Datos. El registro se saca, se coloca donde corresponda y se muestra.

Para el cliente, y para el servidor Web, todo ha sido transparente, pero a la hora de la verdad, las cosas distintas se han ejecutado en distintas máquinas.

Básicamente (y groseramente) ese es el funcionamiento de los EJB.

Sesión o Entidad? Esta es fácil. Los EJB de Sesión se utilizan cuando los cálculos o resultados del EJB no son necesarios para siempre. O sea, que el tener presente el "login" y "password" de un usuario, por ejemplo, se haría con EJB de sesión (no nos interesa que, una vez cerrado el navegador, se sigan guardando esos datos).

Si, por el contrario, los datos del EJB deben tener PERSISTENCIA, usaremos un EJB de Entidad, que será el responsable de guardar esos datos en la Base de Datos.

La "magia" de los EJB es que a la hora de codificar, nos da igual "a priori" dónde esté la Base de Datos, qué base sea, dónde se hagan los cálculos... etc.

Todo eso lo configuraremos en el servidor de aplicaciones J2EE y nos abstraemos de esos detalles.

Esto ha sido un resumen muy resumido y básico (además de muy impreciso). Mírate algún tutorial en la página de SUN, a ver si te aclara mejor.

Ojo, no confundir los EJB con los JavaBeans, que son otra cosa muy distinta!!!

Salu2

Ken