8

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

4

3 回答 3

8

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

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

因此,为了回答您的问题,Hibernate 不支持MongoDB,我认为它支持的可能性几乎为零。

但是,Java / MongoDB 有 ORM 实现,例如MJORM

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

关于休眠 OGM 的更新

您可能可以使用Hibernate OGM。恕我直言,有两个缺点:

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

另外值得一看 Morphia https://github.com/mongodb/morphia。它基本上是类似于 Hibernate 的 Java ORM 库,但不支持 JPA 注释。

于 2013-08-02T19:38:53.283 回答
1

你最好的选择应该是通过 Spring Data MongoDB

实施起来很简单。

看看那里:http ://www.mkyong.com/mongodb/spring-data-mongodb-hello-world-example/

于 2013-08-02T07:53:13.830 回答