Home与Component接口EJB

时间:2015-03-10 07:34:32

标签: java jpa interface ejb ejb-3.0

家庭界面(ref1ref2

  

home接口用于指定客户端使用的方法   创建或检索实体bean实例。 (REF1)

     

需要一个没有参数的创建工厂方法,以及一个   单删除方法。(ref2)

组件接口(ref1ref2

  

组件接口定义bean的业务方法   客户端可以调用。(ref1)

     

它定义了业务逻辑方法,这些方法在   bean实现。(ref2)

所以我理解的是

您可以使用Home界面获取 ONLY 实体Bean的实例,您可以使用Component界面访问 ANY Bean的业务方法。我在这儿吗?

如果我遗漏任何差异,请详细说明其他差异。我在这里有点迷惑......

我的其他问题是EJB3 Entity Beans被折旧(并转移到JPA),那么EJB3中是否需要HomeInterfaces?如果是,那为什么呢?如果没有,那么这个(HomeInterface在EJB 2中的工作)是如何在EJB 3中完成的?

2 个答案:

答案 0 :(得分:1)

  1. 在EJB 2.x中,Home接口允许创建EJB的实例。 Component接口是实际的业务方法。
  2. AFAIK不需要它们。

答案 1 :(得分:0)

  

您可以使用Home界面获取ONLY Entity Beans的实例,   您可以在哪里使用ANY Bean访问业务方法   组件接口。我在这儿吗?

我不确定你在这里强调的是什么,所以我会发表一些声明:

所有bean类型(除了singleton,EJB 3.1中的new)都支持用于访问bean的home接口。您查找(或从EJB 3注入)home接口,然后您可以创建对标识的引用,或者可以为实体bean创建可以找到现有bean实例的对象,或者对于可以声明自己的自定义home方法的实体不特定于任何实体bean标识。

对于无状态,有客户端可见的不同标识,因此每次调用create()都将返回一个可互换的引用。对于有状态,每次调用create()都会返回对不同有状态标识的引用,必须在完成后显式删除()以最小化泄漏(容器将在完成后进行清理)。对于实体,每次调用create()都将返回对不同数据库行的引用,finder方法将返回对这些行的引用。

  

我的另一个问题是在EJB3中实体Bean是折旧的(和   转到JPA)所以在EJB3中是否需要HomeInterfaces?如是   那么为什么 ?如果不是,那么(HomeInterface在EJB 2中的工作)是如何完成的   在EJB 3 ??

由于对无状态和单例的引用与客户端不同,因为您可以查看它们并将引用缓存在实例变量中,因此它们的用处远远不够。对于有状态,用于创建实例的非归属机制是从JNDI查找它,因此不使用home接口会导致(次要?)性能损失。

此外,对于远程EJBHome,getEJBMetaData方法对于希望能够一般处理任何类型的EJB的EJB框架非常有用。