java - 应该为 Java Persistence API (JPA) 实现使用哪个提供程序

标签 java jpa persistence implementation

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

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

最佳答案

Java Persistence API (API) 开发后,迅速流行起来。 JPA 描述了使用 Java 管理应用程序中的关系数据。

JPA(Java Persistence API)是一个供持久化提供者实现的接口(interface)。

Hibernate 就是这样一种 JPA 实现。当您将 Hibernate 与 JPA 一起使用时,您实际上是在使用 Hibernate JPA 实现。

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

JPA 实现:

  • Hibernate:最先进和广泛使用的。注意 类路径,因为使用了很多库,尤其是在使用时 老板。支持 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
  • 使用 Hibernate 的 ORM:Hibernate 现在也非常支持 JPA
  • iBatis:项目移至 MyBatis (link)
  • JDO

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

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

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

关于java - 应该为 Java Persistence API (JPA) 实现使用哪个提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17883971/

相关文章:

java - 在Java中打印带有下一行的字符串(斑马线模式)

java - 日期在应用程序中没问题,但在数据库中保存了 -2 小时

Java Cron4J 持久任务

java - EJB3 - 处理 RollBackException

java - JPA 逆向工程师之后 - 未定义 [javax.persistence.EntityManagerFactory] ​​类型的唯一 bean : expected single bean but found 0

java - 访问并发集合的同步语法

java - 什么java语句或函数来格式化尼日利亚奈拉货币的货币

java - 使用参数化 'jmh' 测量对多线程算法进行基准测试时出错

java - 当表有八列时,在数据库条目中搜索匹配项

java - Google App Engine 上的 JDO 与 JPA for Java