java - 如何将spring hibernate mysql迁移到mongodb

标签 java hibernate mongodb

我正在尝试将一个 hibernate/mysql 项目迁移到 mongodb。 hibernate 是否支持迁移到 mongodb?如果是这样,那么像一对一或一对多关系这样的 ORM 映射是如何翻译的?

最佳答案

Hibernate 支持关系数据库,例如 MySQL、PostgreSQL、Oracle、DB2 和 SQL Server。但是,MongoDB 不是关系数据库,而是文档数据库。差异非常大:

  • 关系数据库定义表之间的关系。表格由行和列组成。这些列连同它们的任何类型或关系约束定义了所谓的模式
  • 文档数据库定义文档集合。文档数据库不知道模式:每个文档都可以有不同的属性。请注意,它们不称为“行”和“列”,而是称为“文档”和“属性”。

所以,为了回答你的问题,Hibernate 不支持 MongoDB我认为它实现的可能性几乎为零。

但是,有针对 Java/MongoDB 的 ORM 实现,例如 MJORM .

但是,由于这是对数据库组织的两种完全不同的观点,因此没有简单的迁移过程。至少它将包括重新考虑您的数据库设计。所以重新考虑迁移可能是值得的,看看它是否真的需要。最后,MongoDB 不是关系数据库的直接替代品,因为它不是关系数据库。有关这两种类型数据库的一些讨论,请参见以下链接:

关于 Hibernate OGM 的更新

你或许可以使用 Hibernate OGM .恕我直言,有两个缺点:

  1. Hibernate OGM 目前处于测试阶段;目前还没有正式发布,最后一个测试版是去年一月份发布的,也就是半年前了。这是否是可接受的风险取决于您的项目。
  2. Hibernate OGM 为 NoSQL 存储(其中包括 MongoDB)提供了一个 JPA 实现。根据您的问题,您当前使用的是 Hibernate,而不是 JPA。这意味着您仍然需要更改域对象以使用 JPA 注释而不是 Hibernate 注释。

关于java - 如何将spring hibernate mysql迁移到mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18010405/

相关文章:

java - 如何遍历数据库中employeeID列中的所有行并一次检索一个小时工资率?

java - 转换为 Dalvik 格式失败。每次打开 Eclipse 时都会重复问题

java错误: inconsistent datatypes: expected NUMBER got BINARY

java - 持久性提供者密码困境

java - 如何强制 hibernate 同步序列?

java - 如何停止另一个类(class)的连续声音循环?

java - hibernate - Blob

node.js - Mongoose 不会将嵌套对象保存在另一个嵌套对象中

.net - 微软自己的面向文档的数据库版本?

mongodb - 用于 BLOB/文件存储的 .NET Web 服务/API