spring - Spring Data MongoDB 和 Hibernate OGM for M

我之前没有使用过 Spring Data,但我已经多次使用 Hibernate ORM 来处理基于 MySQL 的应用程序。我只是不明白为基于 MongoDB 的应用程序在两者之间选择哪个框架。

我已尝试寻找答案,但找不到在生产环境中对两者进行比较的答案。有没有人发现在 MongoDB 中使用这两个框架时遇到问题?

最佳答案

免责声明:我是 Spring Data 项目的负责人,因此我将主要介绍 Spring Data 方面的内容:

我认为这两个项目的核心区别在于 Hibernate OGM 团队选择将他们的工作集中在 JPA 上,而 Spring Data 团队明确没有。原因如下:

  • JPA 本质上是一种关系 API。规范的前两句话指出,它是一个用于对象关系映射的 API。这也体现在 API 的核心主题中:它讨论了表、列、连接、事务。不一定可以转移到 NoSQL 世界的概念。
  • 您通常会选择 NoSQL 存储,因为它具有特殊特性(例如 MongoDB 上的地理空间查询,能够为 Neo4j 执行图遍历)。 JPA 中没有(也将)可用,因此无论如何您都需要提供专有扩展。
  • 更糟糕的是,如果假设用户像在 JPA 中定义的那样在 NoSQL 存储上工作,JPA 的一些概念只会将用户引导到错误的方向:应该如何在 MongoDB 之上合理地实现事务回滚?

因此,对于 Spring Data,我们选择为受支持的商店提供一致的编程模型,而不是试图将所有内容强制到一个过度抽象的 API 中:您将获得众所周知的模板实现,您将获得存储库抽象,它适用于所有商店,但允许您利用商店特定的功能和概念。

关于spring - Spring Data MongoDB 和 Hibernate OGM for MongoDB 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23163853/

相关文章:

javascript - 如何在 Mongoose 中将 _id 设置为 db 文档?

ruby-on-rails - Mongoid/Mongodb 和查询嵌入文档

MongoDB - 十进制类型的值怎么样?

mongodb - 如何使用 mongoose 将文档插入 mongodb 并获取生成的 id?

node.js - 一个包含 node.js 和 mongodb 的整个网站?

mongodb - 如何为 MongoDB 中的嵌入式文档创建唯一 ID?

c# - 如何将任意 json 对象发布到 webapi

mongodb - 检查MongoDB中是否存在索引

node.js - CouchDB、MongoDB 和 Redis 中的哪个数据库适合从 Node.

node.js - Mongoose - 按标准查找子文档