我是EJB&坚持不懈,请原谅我,如果我问一个愚蠢的问题。 我读了一本关于EJB和JPA的书,面对我根本不理解的短语:
旨在完全隔离开发人员直接与之交易 持久性,它(EJB)引入了基于接口的方法,其中 客户端代码从不直接使用具体的bean类。 相反,专门的bean编译器生成了一个实现 bean接口,以方便持久性,安全性, 和事务管理,将业务逻辑委托给 实体bean实现。
和
引入了容器管理的实体bean的概念,其中 bean类变得抽象,服务器负责 生成一个子类来管理持久数据。
这是什么意思:
专门的bean编译器生成了bean接口的实现
服务器负责生成子类来管理持久数据 实际上我无法掌握什么意思生成实现/子类,它在运行时是什么意思?
提前谢谢。
编辑:
最后,实体bean被建模为使用RMI和的远程对象 CORBA,引入网络开销和永远不应该的限制 已添加到持久对象中以开始。
它是否也陷入虚无?
答案 0 :(得分:1)
Specialized Bean :从Java EE 5开始,EJB变成注释@EJB。所有注释都像界面一样工作。这个简单的注释提供了安全性和事务管理,在编译时委托业务逻辑。
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逻辑(我知道,我知道)......