EJB:似乎我不明白关键点

时间:2013-06-22 10:01:33

标签: java ejb persistence entity-bean

我是EJB&坚持不懈,请原谅我,如果我问一个愚蠢的问题。 我读了一本关于EJB和JPA的书,面对我根本不理解的短语:

  

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

  

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

这是什么意思:

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

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

  3. 提前谢谢。

    编辑:

      

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

    它是否也陷入虚无?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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