如何将spring hibernate mysql迁移到mongodb

Mur*_*ali 8 java hibernate mongodb

我正在尝试将hibernate/mysql项目迁移到mongodb.hibernate是否支持迁移到mongodb?如果是这样,ORM映射如何转换为一对一或一对多关系?

mth*_*ers 8

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

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

所以,为了回答你的问题,Hibernate不支持MongoDB,我认为它的机会几乎为零.

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

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

关于Hibernate OGM的更新

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

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