据我所知,JPA本身提供了所有亮眼的功能,如ORM、JPQL和实体关系映射等。但是我不太理解,为什么人们要在JPA的基础上使用Hibernate或Toplink。Hibernate提供了什么JPA本身没有的功能?
JPA只是一个规范。Hibernate和TopLink是该规范的实现。 此外,JPA规范有点薄弱,它仅提供了Hibernate和TopLink等类似产品所提供功能的子集。有时候需要超越JPA并使用底层实现的专有功能。
您应该先将比较对象定为 JPA1,然后再将其与 JPA2(尚未最终确定,但已有规范)进行比较,并查看您想要的应用程序功能是否由 JPA 支持。这是评估是否可以使用纯 JPA 的唯一明智方式。所有持久化技术的实现都有自己的附加组件,可能对您的应用程序非常有意义,但也可能没有。评估您的应用程序中对象之间的关系类型。作为起点,您是否使用接口字段?JPA 不支持基于接口定义的关系。JPA1 不支持 1-N 单向 FK 关系,但在 JPA2 中已支持。--Andy (DataNucleus)