我们应该在 Java 中为 Mongodb 使用像休眠一样的 OGM/ORM 吗?

Som*_*mil 5 java hibernate mongodb hibernate-ogm

最近,我开始研究 mongo。由于 mongodb 的整个概念是无模式且面向文档的,我如何将关系转换为实体?

我在java中使用hibernate ORM将对象映射到表。mongodb 是否需要做同样的事情?

限制我使用 OGM 的事情:

  1. 一旦 Java 实体映射到 mongo 中的集合,mongo 无模式的概念是否仍然有效。在这种情况下,我必须将成员变量映射到该集合的键。此外,如果 mongo 集合应该包含嵌套对象或对象数组,那又如何?

  2. Hibernate最近(2015 年 1 月)为 NoSQL 数据库启动了OGM

任何人都可以帮助我决定为 mongo 选择 OGM 吗?

dev*_*v ツ 3

编辑:昆德拉不再维护。请使用替代方案。


当然,ORM 很容易使用,其中许多允许我们使用 SQL 或 JPQL 以类似于 RDBMS 的方式进行查询,但 ORM 有其自身的局限性,是的,它们也会增加一点开销(在性能方面) 。这就是为什么首选使用 Native MongoDB Java 驱动程序。

对于 NOSQL 数据库,选择 ORM 完全取决于用例。ORM 会将您的表(MongoDB 中的集合)映射到实体对象。您补充说,您可以在实体中保留地图,这将使您的设计变得有点无模式。大多数时候,我们的数据几乎都是结构化的,因此可以使用 ORM。但如果您拥有完全通用的非结构化数据,请选择 Java 驱动程序。检查Mongo 的文档

此外,还有其他稳定的 ORM 工具,如KunderaSpring Data。你应该探索它们。

附:

  • 这个答案适用于 ORM 与本机驱动程序,而不是 Hibernate ORM
  • 我是昆德拉开发者