31

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

有流行的 JPA 实现,如HibernateToplinkEclipseLink。什么实现是一个不错的选择,为什么?

4

1 回答 1

62

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 with Hibernate:Hibernate 现在也非常支持 JPA
  • iBatis:项目迁移到 MyBatis(链接
  • JDO

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

  • 成熟项目:
    • 最先进的
    • 有据可查
  • 有用的 Hibernate 子项目
    • Hibernate 工具:自动生成代码和数据库生成
    • Hibernate 验证:bean 规范能力。与 JPA2 集成
    • Hibernate search:强大的域对象全文搜索
  • 活跃的社区
    • 大型开发社区
    • 被广泛使用的

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

于 2013-07-26T14:24:56.760 回答