gpt4 book ai didi

java - 当集合结构变化很快时,Mongodb是否需要ORM?

转载 作者:行者123 更新时间:2023-11-30 03:24:46 24 4
gpt4 key购买 nike

我是 Java 用户。最近,我需要为MongoDB构建一个Web项目。基于软件需求,我们必须经常改变集合的结构,这意味着没有永久的结构。在尝试了几种用于 MongoDB 的 Java 对象文档映射器(例如 MorphiaSpring data for MongoDB)后,我发现这些框架无法支持集合结构的更改。我们预先在类中定义了参数,但是如果更新后这些参数不再存在于集合中或者需要在类文件中添加一些新参数怎么办?

我的问题是,当集合的结构发生变化时,ORM 是否是必需的。对于这种情况有什么解决办法吗?

最佳答案

这在一定程度上取决于您所说的这些框架不支持集合结构的更改的含义。如果您已经决定使用 Java 作为开发语言,那么您在某些方面就已经致力于相当严格的模式。您可以将您的业务类型建模为 map ,然后您只需按名称将内容填充到 map 中,而不必真正关心类型是什么或底层结构。至少在您将它们拉出来并尝试使用它们之前。您可以手动将 Java 对象转换为各种驱动程序类型(DBObject 或 Document),但这可能是一项相当大的工作,并且随着事情的发展容易出错。

Java 几乎迫使您考虑类型和结构,这是有充分理由的。当您的应用程序从一种模式快速发展到另一种模式时,Java 的类型系统可以帮助您找到忘记更新代码以匹配新结构的情况。任何像样的 IDE 都会帮助您围绕这些新结构进行重构。

同样,使用 Morphia 或 spring-data 等 ODM 将帮助您将数据移入和移出数据库。根据您的开发周期的进展情况,您可能会使用旧模式在数据库中保存数据,但这与您是否使用 ODM 是不同的问题。事实上,使用 ODM 可以帮助您在代码和应用程​​序中找到需要考虑迁移到新架构的位置。

在数据库级别,无论如何您都需要进行迁移。这通常是通过脚本完成的,您可以通过 mongo shell 完成,但当然也可以通过 Java 和驱动程序完成。通过 ODM 使用实体类来迁移数据虽然并非不可能,但肯定会很复杂,但这些问题在很大程度上与是否使用 ODM 的决定正交。

在使用 ODM(以及 RDBMS 系统上的 ORM)构建了许多应用程序后,我发现它们在发展模式时并没有过度限制。最令人头痛的实际上是如何将数据调整为新的形状。实际上,使用 ODM 使得将业务代码迁移到新架构变得几乎微不足道。

最终,这是一个偏好问题,取决于您和您的团队是否满意。就我个人而言,我更愿意使用 ODM,而不是依赖基于 Map 的业务实体或手动将数据传入和传出驱动程序。

关于java - 当集合结构变化很快时,Mongodb是否需要ORM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30519998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com