我想为我的 Web 应用程序使用 Java Persistence API (JPA)。
有流行的 JPA 实现,例如 Hibernate、Toplink 和 EclipseLink。 什么实现是一个不错的选择,为什么?
最佳答案
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/