EJB 和 JPA 之间有什么关系?

2022-09-02 20:58:25

我正在阅读 EJB 3 in Action 一书,我有以下问题:
您编写并用 @Entity 等方式注释的 POJO 是否也是 EJB 实体类型?

我不明白JPA与EJB有什么关系。JPA现在不是一个自己的规范吗?实体也包含在自己的持久性容器中。他们谈论EJB 3 Java Persistence API等,但我不明白实体与EJB有什么关系。


答案 1

JPA 旨在取代 EJB2 实体 Bean,并且已作为 EJB3 规范的一部分开始。

由于在 EJB 容器之外使用 JPA 也是有意义的,因此它现在有自己的规范,但它仍然与 EJB3 相关,因为兼容的 EJB3 容器必须提供 JPA 实现,该实现集成到容器的事务处理中。


答案 2

在 EJB 规范的 2.1 版之前,实体 Bean 类必须实现接口并为样板方法(如 ejbLoad、ejbStore、ejbActivate 和 ejbPassivate)提供实现。javax.ejb.EntityBean

EJB 3.0 采用了 JPA 规范。实体 Bean 的概念被更简单的 JPA 实体概念所取代。要创建此类实体,不需要接口实现或样板方法。实体是具有注释的 POJO。@Entity

因此,在实践中,在 Java EE 应用程序中使用“实体 Bean”EJB 已经死亡(埋藏在 JPA 下),从 EJB 3 开始。


推荐