home接口用于指定客户端使用的方法 创建或检索实体bean实例。 (REF1)
需要一个没有参数的创建工厂方法,以及一个 单删除方法。(ref2)
组件接口定义bean的业务方法 客户端可以调用。(ref1)
它定义了业务逻辑方法,这些方法在 bean实现。(ref2)
所以我理解的是
您可以使用Home界面获取 ONLY 实体Bean的实例,您可以使用Component界面访问 ANY Bean的业务方法。我在这儿吗?
如果我遗漏任何差异,请详细说明其他差异。我在这里有点迷惑......
我的其他问题是EJB3 Entity Beans被折旧(并转移到JPA),那么EJB3中是否需要HomeInterfaces?如果是,那为什么呢?如果没有,那么这个(HomeInterface在EJB 2中的工作)是如何在EJB 3中完成的?
答案 0 :(得分:1)
答案 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框架非常有用。