jsf beans 和 ejb beans 之间的区别

2022-09-03 01:45:10

我需要一些澄清。我知道如何使用JSF及其相应的会话bean,但我对EJB感到困惑。EJB引入的bean和JSF使用的会话bean有什么区别(对于ejb,我知道无状态/完整会话bean和实体Bean,实体管理器等)。我只是没有得到的是什么时候使用EJB和什么时候使用jsf bean。除了实体 bean 之外,ejb 有状态/更少会话 Bean 看起来都类似于 jsf 会话 bean。我已经读到过将ejb注入jsf,但为什么不直接将ejb与jsf豆结合使用呢?我希望你能理解我的困惑。谢谢。


答案 1

首先,我们需要了解 JSFEJB bean 之间的区别。

  1. JSF豆用于读取JSF的组件值。JSF中有两种类型的豆子:POJO classes

    • 受管 Bean 是关于如何创建和初始化 java Bean 的。如您所知,JSF 使用惰性初始化模型。这意味着特定作用域中的 Bean 不是在作用域启动时创建和初始化的,而是按需创建的,即当第一次需要 Bean 时。

    • 支持豆是关于特定受管理的豆所扮演的角色。这是一个角色,它是位于页面上的组件的服务器端表示形式。通常,支持 Bean 具有请求范围,但这不是限制。

  2. EJB Bean 是一个服务器端组件,它封装了应用程序的业务逻辑。业务逻辑是实现应用程序目的的代码。

主要有三种类型的会话豆:

1.状态全会话豆

2.无状态会话豆

3.单例会话豆(ejb 3.1)


答案 2

在 Java EE 中,不同类型的受管 Bean 之间确实存在一些混淆。为了增加混乱,Java EE 6引入了第三种受管bean:CDI Bean。

在这个答案中,我试图解释一下差异和相似之处:CDI和EJB如何比较?相互作用?

简而言之,JSF 托管 Bean 主要不提供对事务的支持,这是您在使用业务逻辑(尤其是 JPA)时经常需要的。

另请注意,会话范围的受管 Bean 中的术语与无状态和有状态会话 Bean 中的术语所指的会话完全不同。session


推荐