由于历史的原因,EJB 3与JPA有着藕断丝连的关系。EJB 2.X中,EJB有三种类型的Bean,分别是会话Bean(Session Bean)、实体Bean(Entity Bean)和消息驱动Bean(Message Driven Bean)。
随着EJB 3规范的推出,EJB中的实体Bean(Entity Bean)逐渐被JPA规范所替代,这也正是为什么JPA的规范包含在EJB 3的规范中的原因。但JPA不仅能在EJB环境中使用,也能在J2SE的环境中使用,相对于EJB 2.X中的实体Bean,使用的范围更光阔。
总之,简单的说,JPA虽然出自EJB3,但其使用的范围却大于EJB3,不仅可用在Java EE 5.0的环境中,也可以应用在Java SE的环境中。如图所示,清楚的表明了EJB3与JPA的关系。