托管bean和会话bean之间的区别
说我有一个实体课,汽车。
@Entity public class Car
我的IDE让我自动从实体类生成会话bean,所以我最终得到了一个CarFacade
@Stateless public class CarFacade
我也可以生成JSF Managed bean
@ManagedBean @RequestScoped public class RegistrationController
我可以理解Entity类和其他bean之间的有意义的区别,但是无状态会话bean和托管bean之间有什么区别? 我读到一个无状态会话bean用于实现在实体上运行的业务逻辑,而托管bean用于与基于Web的前端交互,通过在托管bean上调用网页方法,并使用托管bean调用会话bean上的业务方法。
因此在我的示例中,RegistrationController将具有网页将调用的+ register(String carRegistration)方法。 RegistrationController将依次实例化Car并在会话bean上调用+ create(Car car),这会持久化它。
它是否正确?
JSF托管bean是实体(模型),JSF页面(视图)和企业bean(业务服务)之间的粘合剂(控制器)。
所以,是的,您基本上理解JSF页面应该调用托管bean的操作方法,该操作方法应该将模型和操作进一步委托给业务服务,并最终根据服务结果处理导航结果呼叫。
但是你应该如何使用和传播模型并不完全正确。 通常,您将模型作为托管bean的属性,以便您可以将其绑定到表单的输入元素,最后将其不加改变地传递给业务服务。
例如
同
private Car car; private @EJB CarFacade carFacade; public RegistrationController() { this.car = new Car(); } public String save() { carFacade.create(car); return "someoutcome"; } // ...
- 适用于企业应用程序的瘦(ner)独立客户端
- 无法导入javax.ejb。*包
- java.lang.NoClassDefFoundError:无法初始化类org.hibernate.ejb.Ejb3Configuration
- 如何防止“本地事务已经有1个非XA资源”exception?
- 我可以(以及如何)使用EJB模块中的javax.naming.Context#lookup查找CDI托管bean吗?
- 如何在unit testing中模拟InitialContext构造函数
- 如何指定从中获取EJB的服务器?
- EJB世界的新手…… EJB客户端中的空指针exception
- EJB如何并行化长时间CPU密集型流程?