【问题标题】:Do you need JPA when using MongoDB?使用 MongoDB 时需要 JPA 吗?
【发布时间】:2011-05-14 13:22:21
【问题描述】:

我很困惑这两者。我在看剧! java框架,它说它使用JPA。我正在考虑使用 Play!和MongoDB第一次在一个项目中。我以前使用过 JPA,但当时我正在使用它来写入关系数据库(mysql)。

MongoDB 不是关系数据库,所以如果我想在 Play! 中使用它,我还需要 JPA 吗?还是只是 MongoDB 驱动程序?

我想我在这里混淆了很多事情,所以如果有人可以帮助澄清事情,我将不胜感激!

【问题讨论】:

    标签: java jpa mongodb playframework


    【解决方案1】:

    我认为 play 支持 JPA,但不需要 JPA。您可以完全忘记 JPA,并使用您喜欢的任何 MongoDB API(其原生 API、Brendan 对 Morphia 的建议等)。

    【讨论】:

    • 没错! JPA 与 Play 一起交付,因为它是一个完整的 Web 堆栈,因此它嵌入了 JPA+Hibernate,但您可以使用 JPA 以外的其他东西。例如,对于 MongoDB,有 Morphia,对于 SQL/GAE,有 Siena,对于 GAE,有 Objectify。
    【解决方案2】:

    由于 MongoDB 不是关系型数据库,因此不支持 JPA。

    然而,Morphia,一个用于 MongoDB + Java 的对象文档映射器,它非常接近 JPA 模型,但使用了 MongoDB 适当的语义。众所周知,它可以很好地与 Play 配合使用,如果您想要这种对象映射将是一个很好的模拟。

    【讨论】:

    • 所以 Morphia 基本上是 Java MongoDB 驱动程序的替代品?
    • 不,Morphia 向 Java 驱动程序添加了功能。
    【解决方案3】:

    DataNucleus 已经支持 MongoDB、JPA 和 JDO、Java 中的标准化 API。与其他 API 不同,您拥有可移植性

    【讨论】:

    • 您真的允许开发人员利用 MongoDB 功能,例如原子数据修改、写入关注点和嵌入对象吗?或者它只是一个保存数据的通用存储桶?
    • 已支持嵌入式对象、集合、地图。 slaveOk 支持。写关注点尚不支持,但很容易添加。类似地,mapReduce 应该很容易添加。不知道在 JDO/JPA 的上下文中什么是“通用存储桶”。定义原子操作; DataNucleus 仅在更改或用户将其标记为“脏”时才更新任何内容。归根结底,用户拥有模型类并对其执行 Java 操作;这些映射到 JDO/JPA API 行为。 JDOQL/JPQL 部分在数据存储中执行(如果有可用的语法),其余部分可以在内存中完成
    【解决方案4】:

    EclipseLink 正计划从 JPA 支持 MongoDB。

    看, http://wiki.eclipse.org/EclipseLink/DesignDocs/362899

    【讨论】:

    • 只想更新这个。 EclipseLink 已经为 JPA 提供了 MongoDB 支持
    【解决方案5】:

    仅对 MongoDB 进行编程时不需要 JPA。但是如果你以前使用过 JPA,那么你应该考虑使用 PlayMorphia 模块,因为它的 API 是经过精心设计的,让 JPA 程序员感觉就像在家编程一样。同样,PlayMorphia 不是 JPA 实现,它只是看起来像。

    查看http://www.playframework.org/modules/morphia。还有最新版的documentation

    【讨论】:

      【解决方案6】:

      Hibernate OGM 为 MongoDB 提供 JPA。 MongoDB 大学有一门面向 Java 开发者的课程,也许它会帮助你了解你想做什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        • 2014-06-10
        • 1970-01-01
        • 2014-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多