使用MongoDB的Hibernate

47

我正在寻找有关如何将MongoDB与Hibernate集成(最好是在Spring内部)的资源,以便我可以在关系型数据库和NoSql解决方案之间进行切换:是否有人有做过这样的经验?


3
请查看Hibernate OGM。它还很年轻,但是他们有一些有趣的东西即将推出。 - Shailesh Vaishampayan
10个回答

74

你不能轻易地做到这一点。Hibernate 的作用是将 Java 对象映射到关系型数据库中。虽然 Hibernate 抽象了很多细节,但你仍需要理解关系数据库与外键和主键之类的事物以及运行的查询的性能影响。MongoDB 需要一种完全不同的方式来设计你的数据库,重点在于对象而非列和表。虽然你可能能够为 MongoDB 创建一个 Hibernate 方言,但创建一个适用于关系数据库和 NoSql 数据库的设计会使你的设计两者都无法良好运行。


8
请查看Hibernate OGM。它仍然很年轻,但是他们即将推出一些有趣的东西。 - Shailesh Vaishampayan

34

那么 Hibernate OGM 呢?它为 No-SQL 数据库提供 JPA 支持。


1
具体来说,MongoDB是Hibernate OGM中的一种方言之一。请查看参考指南以了解更多信息。 - Gunnar

24
如果您使用Spring MongoTemplate(类似于HibernateTemplate),则迁移将更加容易。 其中的功能之一是支持JPA注释(尽管我不确定到什么程度)。 更多信息请参见:http://www.springsource.org/spring-data/mongodb 您需要以下内容:
  1. 将spring-data-mongodb JAR添加到项目中(在maven中央可用)。
  2. 将mongo-java-driver JAR添加到项目中(在maven中央可用)。
  3. 以类似于HibernateTemplate的方式使用提供的MongoTemplate类。 例如:mongoTemplate.findById(id, MyClass.class);
    mongoTemplate.insert(myObject);
这里有一个具体的代码示例:use-spring-and-hibernate-with-mongodb

5

如果您正在使用Java,则可以使用Hibernate OGM,它为NoSQL数据库提供Java持久性支持。

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


4

2

还有一种叫做kundera的工具,它使用JPA注释来读/写你的对象到mongodb。如果您熟悉hibernate,那么使用起来应该很简单明了。

我最近尝试了Morphia,它采用相同的方法,但使用它自己的注释。它的表现很好。


1
我认为Hibernate提供了所需的功能。看一下他们官网上的这个例子: 将多个NoSQL数据存储混合在一个应用程序中,例如使用Neo4j来处理朋友关系图,使用MongoDB来处理博客文章。或者混合使用NoSQL和关系型数据库。 参考资料

1

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


1

0

我就举个例子,我正在做类似的事情。在ColdFusion中,Hibernate已经被集成,为了保存你的Hibernate对象,你需要使用EntitySave(Obj)。然而,我们所做的是构建Orm对象,然后使用mongoDB Coldfusion组件,并通过mongo.Save(obj,collectionName)来保存对象。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接