17

有人可以透视JPA和Hibernate之间的区别。还是这些互补的概念可以一起使用?

4

3 回答 3

19

粗略地说,JPA 是来自 java 社区的标准,这里是规范,它已经由 Hibernate 的人实现(和扩展)(一些信息在这里)。作为规范,您不会直接使用 JPA,而是使用 JPA 实现。

请注意,如果您使用 hibernate JPA 的扩展,您将破坏与其他 JPA 实现的兼容性(尽管有些人会说“为什么要使用另一个 JPA 实现?”)。

于 2008-12-23T19:20:07.653 回答
7

2015 年更新:这是一个非常古老的问题,在过去的 6 年中发生了很多变化。如今,JPA API 的功能非常丰富,我建议使用 JPA,因为越来越多的工具和框架都与它保持一致。一个例子是 Spring Data JPA:它删除了许多常见任务的样板文件,并且非常高效:

http://projects.spring.io/spring-data-jpa/

原始答案:我会回应 cheng81 的评论,并投票支持使用普通的 Hibernate API。JPA 的功能集比 Hibernate 的要小,我认为没有理由仅仅因为它是一个“标准”就用“纯 JPA”来限制自己。

于 2009-01-02T05:12:38.323 回答
0

Hibernate 是一个非常好的解决方案,但是它的许可证 (GPL) 意味着它不能在某些项目中使用。

JPA 是一个规范,它支持包括 Hibernate 在内的一系列实现,但也支持 OpenJPA 和其他具有不同特性的产品。

如果您可以只使用 Hibernate,那么它可能是值得的,因为它成熟、稳定且性能良好。但是,如果您需要将持久性引擎合并到附带非 GPL 许可证的产品中,则需要走 JPA 路线(或为商业 Hibernate 许可证付费)。

于 2011-11-15T13:45:49.390 回答