我正在尝试将一个 hibernate/mysql 项目迁移到 mongodb。 hibernate 是否支持迁移到 mongodb?如果是这样,那么像一对一或一对多关系这样的 ORM 映射是如何翻译的?
最佳答案
Hibernate 支持关系数据库,例如 MySQL、PostgreSQL、Oracle、DB2 和 SQL Server。但是,MongoDB 不是关系数据库,而是文档数据库。差异非常大:
- 关系数据库定义表之间的关系。表格由行和列组成。这些列连同它们的任何类型或关系约束定义了所谓的模式。
- 文档数据库定义文档集合。文档数据库不知道模式:每个文档都可以有不同的属性。请注意,它们不称为“行”和“列”,而是称为“文档”和“属性”。
所以,为了回答你的问题,Hibernate 不支持 MongoDB我认为它实现的可能性几乎为零。
但是,有针对 Java/MongoDB 的 ORM 实现,例如 MJORM .
但是,由于这是对数据库组织的两种完全不同的观点,因此没有简单的迁移过程。至少它将包括重新考虑您的数据库设计。所以重新考虑迁移可能是值得的,看看它是否真的需要。最后,MongoDB 不是关系数据库的直接替代品,因为它不是关系数据库。有关这两种类型数据库的一些讨论,请参见以下链接:
- Document Database versus Relational Database : how to choose?
- Pros/cons of document-based databases vs. relational databases
- Wikipedia: Document-oriented database
- Wikipedia: Relational database
关于 Hibernate OGM 的更新
你或许可以使用 Hibernate OGM .恕我直言,有两个缺点:
- Hibernate OGM 目前处于测试阶段;目前还没有正式发布,最后一个测试版是去年一月份发布的,也就是半年前了。这是否是可接受的风险取决于您的项目。
- Hibernate OGM 为 NoSQL 存储(其中包括 MongoDB)提供了一个 JPA 实现。根据您的问题,您当前使用的是 Hibernate,而不是 JPA。这意味着您仍然需要更改域对象以使用 JPA 注释而不是 Hibernate 注释。
关于java - 如何将spring hibernate mysql迁移到mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18010405/