7

我正在使用 Java 语言。我必须使用带有 MongoDb 的 ORM 框架作为数据库。我有两个选项 Morphia 或 Spring Data Mongo 支持。据我所知,我发现 Spring Data Mongo 更好用,因为: 1)它提供了更好的DAO开箱即用的内置类。2)拥有更大的社区基础。

两者之间是否存在基于性能的差异。如果在哪种情况下哪个更好。另外我有多租户的要求。经过少量搜索后,我发现 Spring Data Mongo 中有非常简单的自定义实现可以做到这一点。但是在 Morphia 中有点困难。在 Morphia 中实现多租户是否困难(我们需要编写大量样板代码)

4

2 回答 2

8

我一直在使用 Spring-data,我想我觉得它在成熟度方面有所滞后。

它对所有实际目的都有好处,但是 mongo 提供的功能在它的全部荣耀中提供,Spring-data 将其映射为驱动程序特别是在聚合时很慢。

就性能而言,Spring-data 并不落后于 imo。

有时我会出现奇怪的行为。他们的一些注释在某些地方默默地不起作用,对于我的生活,我无法弄清楚为什么?

但作为一个整体实现,它提供了一个健壮的结构,您的应用程序可以在其上增长。如果您来自 SQL 背景,这也很容易,因为您可以在 jdbcTemplate 和 mongoTemplate 之间进行比较(尽管需要谨慎)

我认真考虑过使用 Morphia,但由于 spring-data 提供了更结构化的方式,所以放弃了这个想法。看起来在 Morphia 中,我们必须自己实现一些有利有弊的结构,但您通常希望避免这样做。由于存在样板代码的风险,因此新成员的“您的”结构存在学习曲线。

在专业方面,我相信 Morphia 提供了更多的可扩展性,让您享受从 mongo 功能中汲取大部分功能的能力。与 Spring 数据相比,它也是轻量级的。

于 2016-12-30T09:09:43.567 回答
7

Morphia是要走的路。相当稳定,非常好的 Play 集成,如果您需要更大的扭矩,可以访问所有 Mongo 驱动程序功能。参考解析、实体嵌入按预期工作。您还可以获得生命周期注释,这对于样板持久性代码非常有用。

由于 hades 项目,我个人喜欢 spring-data……您不需要实现 DAO。您只需编写接口,spring 数据会自动提供给您。然而,在我最初的试用中,Spring Data Mongodb 的实现似乎有点问题。如果您有困难的日期并且正在开发高质量的产品,那么选择 Morphia 可能是明智的。

获取更多信息和实现示例:mongodb-java-comparison/

于 2016-12-28T14:33:18.670 回答