我们是否应该在Mongodb中使用java中类似于hibernate的OGM/ORM?

我们是否应该在Mongodb中使用java中类似于hibernate的OGM/ORM?,java,mongodb,hibernate,hibernate-ogm,Java,Mongodb,Hibernate,Hibernate Ogm,最近,我开始研究mongo。由于mongodb的整个概念是无模式和面向文档的,如何将关系转换为实体 我在java中使用hibernate ORM将对象映射到表。mongodb是否也需要这样做 限制我使用OGM的因素: 一旦Java实体映射到mongo中的集合,mongo是无模式的概念是否仍然有效。在这种情况下,我必须将成员变量映射到该集合的键。另外,如果mongo集合应该包含嵌套对象或对象数组,那么会发生什么 Hibernate最近(2015年1月)推出了NoSQL数据库的应用程序 有谁能帮我决

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

我在java中使用hibernate ORM将对象映射到表。mongodb是否也需要这样做

限制我使用OGM的因素:

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

  • Hibernate最近(2015年1月)推出了NoSQL数据库的应用程序


  • 有谁能帮我决定为mongo选择OGM吗?

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

    对于NOSQL数据库,选择ORM完全取决于用例。ORM将把表(MongoDB中的集合)映射到实体对象。您还添加了,您可以在实体中保留一个映射,这将允许您的设计变得有点无模式。大多数情况下,我们的数据几乎是结构化的,因此可以使用ORM。但是,如果您有完全通用的非结构化数据,请选择Java驱动程序。检查

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

    附言:

    • 这个答案适用于非Hibernate ORM上的ORMs与本机驱动程序
    • 我是昆德拉的开发者

    我会推荐一个OGM框架,或者如果你需要更高级别和更类似于Hibernate的东西,那就考虑一下。Ferma位于Tinkerpop之上,使用注释定义类似于JPA和Hibernate中实体的Java类。区别在于Ferma和Tinkerpop是专门为图形数据库构建的,而不是试图将其填充到为传统关系数据库设计的框架中

    Ferma和Tinkerpop的一个很好的特性是,虽然它们是为图形数据库构建的,但它们仍然在关系数据库上工作。Tinkerpop有几个驱动因素,允许它在市场上几乎所有主要的图形数据库和关系数据库上工作。它还可以使用Tinkerpop中固有的内存驱动程序,因此根本不需要任何数据库的支持。它是一个非常灵活的平台,在模块化和灵活的代码方面有很多好处

    以下是Ferma项目的说明,以供参考

    Ferma项目最初是作为 TinkerPop2框架项目。这在当时缺乏 社区,其表现极其缓慢。今天费尔马 是一个健壮的框架,其作用类似于 传统数据库的对象关系模型(ORM)库。费尔马 通常被称为对象图模型(OGM)库和映射 Java对象指向图形中的元素,如顶点或边。在里面 简而言之,它允许使用java接口和 类,它为与 基础图

    以及Tinkerpop项目的描述

    阿帕奇小叮当™ 是一个图形计算框架,适用于两种图形 数据库(OLTP)和图形分析系统(OLAP)


    注意:我是Ferma的作者之一。

    您知道可以指导我将数据库从Oracle更改为OGM的文档吗?我没有将Oracle更改为OGM?OGM是指休眠OGM?到目前为止,您如何访问oracle?是的,抱歉。我们正在从通过Hibernate ORM访问的Oracle数据库迁移到Mongo数据库。您想要哪个ORM的文档?您是否为您的用例最终确定了一个合适的ORM?不,我不知道有不同的ORM格式可供选择。我想我还有更多的研究要做。谢谢