我正在阅读《EJB 3 in Action》一书,我有以下问题:
用 @Entity 注释的 POJO 是否也是 EJB 实体类型?
我不理解 JPA 与 EJB 的关系。JPA 不是现在自己的规范吗?实体也包含在自己的持久化容器中。他们谈论 EJB 3 Java Persistence API 等等,但我不明白实体与 EJB 有什么关系。
我正在阅读《EJB 3 in Action》一书,我有以下问题:
用 @Entity 注释的 POJO 是否也是 EJB 实体类型?
我不理解 JPA 与 EJB 的关系。JPA 不是现在自己的规范吗?实体也包含在自己的持久化容器中。他们谈论 EJB 3 Java Persistence API 等等,但我不明白实体与 EJB 有什么关系。
JPA旨在替代EJB2实体Bean,最初是EJB3规范的一部分。
由于在EJB容器之外使用JPA也很有意义,因此现在它有了自己的规范,但仍然与EJB3相关,因为符合EJB3规范的容器必须提供JPA实现,并将其集成到容器的事务处理中。
在EJB规范的2.1版本之前,实体Bean类必须实现javax.ejb.EntityBean
接口并提供ejbLoad,ejbStore,ejbActivate和ejbPassivate等样板方法的实现。
EJB 3.0采用了JPA规范。实体Bean的概念被更简单的JPA实体所取代。创建此类实体时,不需要接口实现或样板方法。该实体是一个具有@Entity
注释的POJO。
因此,在实践中,使用Java EE应用程序中的“实体Bean” EJB已经被JPA取代,从EJB 3开始不再使用。