为什么要使用 Home 界面创建 Bean 实例?而是直接查找?(EJB 2.1)



我无法理解为什么在所有指南中都写要使用它:

SayHiRemote sayHiRemote = InitialContext
            .<SayHiHomeRemote> doLookup(SayHiHomeRemote.JNDI_GLOBAL_NAME)
            .create();
sayHiRemote.hi();

而不仅仅是:

SayHiRemote sayHiRemote = InitialContext
            .<SayHiRemote> doLookup(SayHiRemote.JNDI_GLOBAL_NAME);
sayHiRemote.hi();

如果不需要参数(无状态会话 Bean),"create()"方法有什么好处?

在 EJB 3 之前,不可能直接查找无状态会话 Bean。 除了与其他 Bean 类型的一致性之外,没有真正的好处,这就是为什么在 EJB 3 中将其删除的原因。

有状态会话 bean 仍然有一个好处,因为 create 方法是工厂方法,所以如果你切换到 EJB,你会失去类型安全(cast vs create() 返回类型),并且取决于 JNDI 与 home.create() 的相对速度,你可能会失去一些性能。

最新更新