【问题标题】:EJB: seems I don't understand the crucial pointEJB:好像没看懂重点
【发布时间】:2013-06-22 10:01:32
【问题描述】:

我是 EJB 和持久性方面的新手,所以如果我问一个愚蠢的问题,请原谅。 我读了一本关于 EJB 和 JPA 的书,遇到了一个我完全不懂的短语:

旨在完全隔离开发人员直接与 持久性,它(EJB)引入了一种基于接口的方法,其中 客户端代码从未直接使用具体的 bean 类。 相反,一个专门的 bean 编译器生成了一个实现 bean 接口以促进诸如持久性、安全性、 和事务管理,将业务逻辑委托给 实体 bean 实现。

引入了容器管理实体 bean 的概念,其中 bean 类变得抽象,服务器负责 生成一个子类来管理持久数据。

什么意思:

  1. 专门的 bean 编译器生成了 bean 接口的实现

  2. 服务器负责生成一个子类来管理持久数据 实际上我无法理解生成实现/子类是什么意思,它是在运行时的意思吗?

提前谢谢你。

已编辑:

最后,实体 bean 被建模为使用 RMI 和 CORBA,引入了不应该的网络开销和限制 已被添加到一个持久对象中。

它也沉入虚无吗?

【问题讨论】:

  • 本书讲的是哪个版本的 EJB?
  • 讲了EJB的演进。第一个短语是关于 EJB1.0,第二个是关于 EJB2.0。在 EJB3.0 中有所不同?
  • 除非您的工作场所特别需要,否则忘记 EJB 3 之前的任何内容。那是一场噩梦。

标签: java ejb persistence entity-bean


【解决方案1】:

1) 接口:要定义一个bean,你必须声明一个Local接口和一个Remote接口(如果你写beanMyEJB,它们必须是MyEJBLocalMyEJBRemote;@ 987654326@ 将实现两者)。这样,编译器生成了一些实现方法的派生类,这些方法只需连接到 EJB 服务器以检索 bean 并执行其方法。

我不太确定 2,因为我们遇到了太多性能问题,以至于我们结束了在 Session bean 中实现 JDBC 逻辑(我知道,我知道)...

【讨论】:

  • 还有一个关于 RMI 的问题(请参阅我的问题的已编辑部分)
  • 只是表示编译器生成的stub类内部使用RMICORBA连接服务器。从客户端 POV 来看,实体或会话 bean 是远程对象,可通过存根访问。
  • 现在有什么不同吗?怎么样?
  • 比较容易说,没变的是名字,还有Session(Stateless和Stateful)和Entity的意思,意思一样(但实现技术不同)。
【解决方案2】:
  1. Specialized Bean:从Java EE 5 开始,EJB 变成了注解@EJB。所有注释都像界面一样工作。这个简单的注释提供安全性和事务管理,在编译时委派业务逻辑。

  2. JPA:自 Java EE 5 以来不再存在实体 bean。现在,如果您将 @Entity 放在 pojo 上,服务器将生成容器管理的实体 bean 并通过持久性上下文与数据库通信.

【讨论】:

  • 这是否意味着'@EJB MyBean'类似于'MyBean implements EJBInterface'
  • 还有一个关于 RMI 的问题(请参阅我的问题的已编辑部分)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 2018-01-09
  • 2017-09-21
  • 2015-08-25
相关资源
最近更新 更多