我正在尝试将 hibernate/mysql 项目迁移到 mongodb。hibernate 支持迁移到 mongodb 吗?如果是这样,像一对一或一对多关系这样的 ORM 映射是如何翻译的?
3 回答
Hibernate 支持关系数据库,如 MySQL、PostgreSQL、Oracle、DB2 和 SQL Server。然而,MongoDB 不是一个关系数据库,它是一个文档数据库。差异非常大:
- 关系数据库定义表之间的关系。表由行和列组成。这些列以及它们上的任何类型或关系约束,定义了所谓的模式。
- 文档数据库定义文档集合。文档数据库不知道架构:每个文档都可以有不同的属性。请注意,这些不称为“行”和“列”,而是称为“文档”和“属性”。
因此,为了回答您的问题,Hibernate 不支持MongoDB,我认为它支持的可能性几乎为零。
但是,Java / MongoDB 有 ORM 实现,例如MJORM。
但是,由于这是对数据库组织的两种完全不同的观点,因此没有简单的迁移过程。至少它将包括重新考虑您的数据库设计。因此,重新考虑迁移可能是值得的,看看它是否真的需要。最后,MongoDB 不是关系数据库的直接替代品,因为它不是关系数据库。有关这两种类型的数据库的一些讨论,请参见以下链接:
关于休眠 OGM 的更新
您可能可以使用Hibernate OGM。恕我直言,有两个缺点:
- Hibernate OGM 目前处于测试阶段;目前还没有正式发布,最后一个测试版是去年一月发布的,也就是半年前。这取决于您的项目是否可以接受风险。
- Hibernate OGM为 NoSQL 存储(其中包括 MongoDB)提供了JPA实现。根据您的问题,您当前使用的是 Hibernate,而不是 JPA。这意味着您仍然必须更改域对象以使用 JPA 注释而不是 Hibernate 注释。
另外值得一看 Morphia https://github.com/mongodb/morphia。它基本上是类似于 Hibernate 的 Java ORM 库,但不支持 JPA 注释。
你最好的选择应该是通过 Spring Data MongoDB
实施起来很简单。
看看那里:http ://www.mkyong.com/mongodb/spring-data-mongodb-hello-world-example/