tutorial services mega experto edition desde curso cero java jsf java-ee ejb

java - services - Diferencia entre un bean gestionado y un bean de sesión



java ee: desde cero a experto mega (1)

El bean administrado JSF es el pegamento (controlador) entre la entidad (modelo), la página JSF (vista) y el bean empresarial (servicio empresarial).

Entonces, sí, básicamente entiendes que la página JSF debería invocar el método de acción del bean administrado que a su vez debería delegar el modelo y la acción en el servicio de negocios y, finalmente, manejar el resultado de la navegación en función del resultado del servicio. llamada.

Pero no tiene toda la razón en cómo se debe usar y transmitir el modelo. Por lo general, el modelo se convierte en una propiedad del bean administrado, de modo que puede enlazarlo a los elementos de entrada del formulario y, finalmente, pasarlo sin cambios al servicio empresarial.

P.ej

<h:inputText value="#{registrationController.car.make}" /> <h:inputText value="#{registrationController.car.model}" /> <h:inputText value="#{registrationController.car.year}" /> <h:commandButton value="Save" action="#{registrationController.save}" />

con

private Car car; private @EJB CarFacade carFacade; public RegistrationController() { this.car = new Car(); } public String save() { carFacade.create(car); return "someoutcome"; } // ...

Digamos que tengo una clase de Entidad, Coche.

@Entity public class Car

Mi IDE me permite generar automáticamente beans de sesión a partir de clases de entidad, así que termino con un CarFacade

@Stateless public class CarFacade

También puedo generar JSF Managed Beans.

@ManagedBean @RequestScoped public class RegistrationController

Puedo entender la diferencia significativa entre la clase Entidad y otros beans, pero ¿cuáles son las diferencias entre un bean de sesión sin estado y un bean administrado? Leí que un bean de sesión sin estado es para implementar la lógica de su negocio que funciona en las entidades y los beans administrados son para interactuar con el front-end basado en web, al tener los métodos de llamada de la página web en el bean administrado y la llamada del bean administrado Métodos de negocio en el bean sesión.

Por lo tanto, en mi ejemplo, el RegistrationController contaría con un método de registro + (String carRegistration) que llamaría la página web. El RegistrationController a su vez crearía una instancia de Car y call + create (Car car) en el bean de sesión, lo que persistiría.

¿Es esto correcto?