1

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

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

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

这是什么意思:

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

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

先感谢您。

编辑:

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

是否也沉沦于虚无?

4

2 回答 2

1
  1. Specialized Bean:从Java EE 5 开始,EJB 变成了注解@EJB。所有注释都像界面一样工作。这个简单的注释提供安全性和事务管理,在编译时委派业务逻辑。

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

于 2013-06-22T10:11:52.600 回答
1

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

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

于 2013-06-22T10:19:28.513 回答