java - Hibernate vs JPA vs JDO - 各自的优缺点?

标签 java hibernate orm jpa jdo

我熟悉 ORM 作为一个概念,几年前我什至在一个 .NET 项目中使用过 nHibernate;但是,我没有跟上 Java 中的 ORM 的话题,也没有机会使用这些工具中的任何一个。

但是,现在我可能有机会开始为我们的一个应用程序使用一些 ORM 工具,以尝试摆脱一系列遗留 Web 服务。

我很难区分 JPA 规范、Hibernate 库本身的功能以及 JDO 提供的功能之间的区别。

所以,我知道这个问题有点开放,但我希望得到一些意见:

  • 各有什么优缺点?
  • 您对新项目有什么建议?
  • 在某些情况下使用一个框架而不是另一个框架是有意义的吗?

最佳答案

一些注意事项:

  • JDO 和 JPA 都是规范,而不是实现。
  • 如果您将代码限制为仅使用标准 JPA,您可以交换 JPA 实现。 (JDO 也是如此。)
  • Hibernate 可用作 JPA 的此类实现之一。
  • 不过,Hibernate 提供了一个原生 API,其功能超越了 JPA。

IMO,我会推荐 Hibernate。


如果您需要使用 Hibernate 特定的功能,您应该怎么做有一些评论/问题。有很多方法可以解决这个问题,但我的建议是:

  • 如果您不担心与供应商合作的前景,那么请在 Hibernate 和其他 JPA 和 JDO 实现之间做出选择,包括您决策中的各种供应商特定扩展.

  • 如果您担心与供应商合作的前景,并且如果不求助于供应商特定的扩展就无法使用 JPA,那么请不要使用 JPA。 (JDO 同上)。

实际上,您可能需要在多少担心供应商绑定(bind)与多少需要这些供应商特定的扩展之间进行权衡。 p>

还有其他因素,例如您/您的员工对各自技术的了解程度、产品在许可方面的成本以及您认为 JDO 和 JPA future 会发生什么的故事。

关于java - Hibernate vs JPA vs JDO - 各自的优缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/530215/

相关文章:

java - Carrot2 在搜索时不显示所有包含特定单词的簇

java - MongoDB 中的日期 : when inserting Date objects into Mongo database, 日期比自身早 1 天

java - 使用 HIbernate 从数据库检索日期时获取错误的日期时间字段值

java - 将 Set 与 @OrderColumn 组合

android - 在 Realm for Android 中从子访问父

java - 4 位调色板的奇怪 BufferedImage 行为

java - 在一行中创建和填充 TreeMap

java - Thymeleaf 显示该书的作者列表

java - 我应该将 Hibernate 2.5 升级/迁移到 Hibernate 3.0 还是直接升级到最新的稳定版本?

php - Laravel4 模型主键值在插入后丢失