应该将哪个提供程序用于Java Persistence API(JPA)实现

Dim*_*ele 23 java provider implementation persistence jpa

我想为我的Web应用程序使用Java Persistence API(JPA).

有流行的JPA实现,如Hibernate,ToplinkEclipseLink.什么实施是一个很好的选择,为什么?

Dim*_*ele 50

在开发Java Persistence API(API)时,它变得非常流行.JPA描述了使用Java在应用程序中管理关系数据.

JPA(Java Persistence API)是持久性提供程序要实现的接口.

Hibernate就是JPA的一个这样的实现.当您使用Hibernate和JPA时,您实际上正在使用Hibernate JPA实现.

JPA通常通过Java类中的注释定义元数据.或者通过XML或两者的组合.XML配置会覆盖注释.

JPA实现:

  • Hibernate:最先进和最广泛使用的.注意类路径,因为使用了很多库,特别是在使用JBoss时.支持JPA 2.1.
  • Toplink:仅支持基本的JPA规范.(这是oracle的JPA实现的免费版本)
  • EclipseLink:基于TopLink,是Oracle和TopLink持久性的预期前进道路.支持JPA 2.1
  • Apache OpenJPA:最好的文档,但似乎非常错误.JPA的开源实现.支持JPA 2.0
  • DataNucleus:文档齐全,开源(Apache 2许可证),也是JDO提供商.支持JPA 2.1
  • ObjectDB:有据可查
  • CMobileCom JPA:适用于Java和Android的轻量级JPA 2.1实现.

其他方法是:

  • 简单的JDBC
  • ORM与Hibernate:Hibernate现在也非常支持JPA
  • iBatis:该项目迁至MyBatis(链接)
  • JDO

Hibernate作为我的JPA选择的动机:

  • 成熟项目:
    • 最先进的
    • 记录完整
  • 有用的Hibernate子项目
    • Hibernate工具:自动生成代码和数据库生成
    • Hibernate验证:bean规范功能.与JPA2集成
    • Hibernate搜索:对域对象进行强大的全文搜索
  • 积极的社区
    • 大发展社区
    • 广泛使用

在最终规范发布后,Hibernate成为JPA的开源实现.它具有丰富的功能集并可快速生成新功能,因为开源开发流程往往比Java社区流程更快.

  • "最先进的"?大声笑.我可以列举Hibernate没有的其他JPA impls(例如DataNucleus JPA,EclipseLink)中的许多功能.并不意味着Hibernate在某些方面并不擅长,但这样的一揽子陈述是(部分)这种性质的问题不适合这个网站的原因.在这里,您正在回答自己的问题,所以也许它只是针对其他工具的FUDDing练习? (7认同)
  • 市场份额告诉你什么是好事.根据您的应用程序和所需功能,自己动手. (3认同)
  • 拥有 [67% 的市场份额](http://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-for-2014/),这意味着所有其他提供程序加起来只有不到一半的 Hibernate 使用用户。这说明了很多。 (2认同)