为什么在EJB中使用Facade模式?

时间:2011-05-28 21:14:05

标签: ejb facade

我已经阅读了这个article,试图理解为什么你想在客户端和实体bean之间使用会话bean。是因为通过让客户端直接访问实体bean,您会让客户端确切地了解数据库的所有内容吗?

因此,通过拥有中间人(会话bean),您只需通过某种方式实现业务逻辑,让客户端知道数据库的一部分。因此,只有与客户端相关的数据库的一部分才可见。可能还会增加安全性。

以上陈述是否属实?

4 个答案:

答案 0 :(得分:4)

  • 避免客户与客户之间的紧密联系;业务对象,提高可管理性。
  • 减少细粒度方法调用,最大限度地减少网络上的方法调用调用,提供对客户端的粗粒度访问。
  • 可以集中安全&交易限制。
  • 更大的灵活性&能够应对变化。
  • 仅曝光所需&为客户提供更简单的接口,隐藏底层复杂性和内部细节,业务组件之间的相互依赖性。

答案 1 :(得分:2)

您引用的文章 完全 已过期。检查日期,从2002年开始。

EJB中的实体bean不再存在这样的东西(它们目前保留用于向后兼容,但是处于完全清除的边缘)。实体豆尴尬的事情;完全位于容器中的模型对象(例如Person),访问它的每个属性(例如getName,getAge)都需要远程容器调用。

在这个时代,我们有JPA实体,它们是POJO并且只包含数据。不要将JPA实体与这个古老的EJB实体bean混淆。它们听起来很相似,但完全不同。 JPA实体可以安全地发送到(远程)客户端。如果您真的担心实体中使用的名称会显示您的数据库结构,那么您可以使用XML映射文件而不是注释,并使用完全不同的名称。

也就是说,如果需要,会话bean仍然可以完美地用于实现Facade模式。这种模式确实用于为客户提供简化且通常受限制的系统视图。只是将会话bean用作实体bean的Facade的想法完全过时了。

答案 2 :(得分:1)

这是为了简化客户的工作。 Facade提供了一个简单的界面,并隐藏了客户端模型的复杂性。只要外观不改变其界面,它还可以在不影响客户端的情况下更改模型。

答案 3 :(得分:0)

它将应用程序逻辑与业务逻辑分离 因此,实际的数据结构和实现可以在不破坏利用API的现有代码的情况下进行更改 当然,如果将bean暴露给外部网络,它会隐藏“未知”应用程序的数据结构