使用MongoDB进行Hibernate

时间:2010-01-28 08:37:36

标签: spring hibernate mongodb hibernate-ogm

我正在寻找显示如何将MongoDB与Hibernate集成的资源(最好是从春季开始),以便我可以在RDBMS和NoSql替代方案之间切换:有没有人有这方面的经验?

10 个答案:

答案 0 :(得分:66)

你不能轻易做到这一点。 Hibernate的目的是将Java Objects映射到关系数据库。虽然Hibernate抽象了很多细节,但您仍然需要了解关系数据库如何与外键和主键之类的东西一起工作,以及您运行的查询的性能影响。 MongoDB需要一种完全不同的方式来设计数据库,而不是关注对象而不是列和表。虽然你可以为MongoDB创建一个Hibernate方言,创建一个可以在关系数据库和NoSql数据库上工作的设计,但会给你一个在两者上都运行不佳的设计。

答案 1 :(得分:32)

Hibernate OGM怎么样?它为 No-SQL 数据库提供JPA。

答案 2 :(得分:22)

如果使用Spring MongoTemplate(类似于HibernateTemplate),迁移会更容易。
其中的特征是对JPA注释的支持(虽然,我不确定在多大程度上) 查看更多:http://www.springsource.org/spring-data/mongodb

您需要以下内容:

  1. 将spring-data-mongodb JAR添加到您的项目中(在maven中可用) 中央)。
  2. 将mongo-java-driver JAR添加到您的项目中(可用于 maven central)。
  3. 使用提供的类似的MongoTemplate类 对HibernateTemplate的态度。例如。: mongoTemplate.findById(id, MyClass.class);
    mongoTemplate.insert(myObject);
  4. 以下是代码为use-spring-and-hibernate-with-mongodb

    的具体示例

答案 3 :(得分:4)

答案 4 :(得分:2)

还有kundera,它使用JPA注释从/向mongodb读取/写入对象。如果你熟悉hibernate,那么使用它应该是非常直观的。

我最近尝试Morphia,它使用相同的方法,但有自己的注释。 它工作正常

答案 5 :(得分:2)

如果您使用的是Java,则可以使用 Hibernate OGM ,它为 NoSQL 数据库提供Java Persistence支持。

有关详细信息,请访问http://hibernate.org/ogm/

答案 6 :(得分:1)

愿这篇博客有所帮助:http://drorbr.blogspot.com/2010/02/migrating-springhibernate-application.html 在这里,Dror Bereznitsky很好地描述了如何将基于sping / hibernate的解决方案与mongodb集成。

答案 7 :(得分:1)

为了完整起见,PlayORM现在也支持MongoDB。 PlayORM是一个对象NoSQL映射解决方案,因此您可以编写POJO并让它处理MongoDB的编组/解组的所有细节。访问documentation此处

答案 8 :(得分:0)

嗯,只是举个例子,我正在做一些同样的事情。在ColdFusion中,Hibernate是集成的,为了保存你的Hibernate对象,你需要做EntitySave(Obj)。但是我们所做的是构建Orm对象,然后使用mongoDB Coldfusion组件,只需通过mongo.Save(obj,collectionName)保存对象。

答案 9 :(得分:0)

我认为Hibernate提供了所需的功能。看一看,可以在他们的官方网站上找到: 在一个应用程序中混合多个NoSQL数据存储区,例如使用Neo4j绘制友谊图,使用MongoDB绘制博客文章。或混合使用NoSQL和关系数据库。

reference