jsf bean和ejb bean之间的区别

Ale*_*is 15 java jsf ejb java-ee

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

小智 11

亚历克西斯

您首先需要了解JSF bean和EJB bean之间的区别.

JSF Bean: JSF bean是pojo类,用于读取jsf的组件值.jsf中有两种类型的bean

托管bean是关于如何创建和初始化java bean的.如您所知,jsf使用延迟初始化模型.这意味着特定范围内的bean不是在启动范围时创建和初始化,而是按需创建和初始化,即在第一次需要bean时.

支持bean是关于特定托管bean所扮演的角色.这是位于页面上的组件的服务器端表示的角色.通常,支持bean具有请求范围,但它不是限制.

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

主要有三种类型的会话bean-

1.Statefull会话bean

2.无状态会话bean

3.Singleton会话bean(ejb 3.1)


Arj*_*jms 9

Java EE中不同类型的托管bean之间确实存在一些混淆.更令人困惑的是,Java EE 6引入了第三种托管bean:CDI bean.

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

简单地说,JSF托管bean主要不提供对事务的支持,这在使用业务逻辑尤其是JPA时经常需要.

另请注意,session会话作用域托管bean中的术语与无状态会话Bean和有状态会话Bean所引用的术语完全不同.