我正在寻找展示如何将 MongoDB 与 Hibernate 集成的资源(最好是在 spring 中),以便我可以在 RDBMS 和 NoSql 替代方案之间切换:有人有这样做的经验吗?
10 回答
你不能轻易做到这一点。Hibernate 的重点是将 Java 对象映射到关系数据库。尽管 Hibernate 抽象了很多细节,但您仍然需要了解关系数据库如何处理诸如外键和主键之类的东西,以及您运行的查询对性能的影响。MongoDB 需要一种完全不同的方式来设计数据库,专注于对象而不是列和表。虽然您可能能够为 MongoDB 创建一个 Hibernate 方言,但创建一个可以在关系数据库和 NoSql 数据库上运行的设计会给您一个在两者上都运行不佳的设计。
休眠 OGM怎么样?它为No-SQL数据库提供 JPA 。
如果您使用 Spring MongoTemplate(类似于 HibernateTemplate),迁移会更容易。
它的特性之一是对 JPA 注释的支持(尽管我不确定到什么程度)。
查看更多:http ://www.springsource.org/spring-data/mongodb
您将需要以下内容:
- 将 spring-data-mongodb JAR 添加到您的项目中(在 maven Central 中可用)。
- 将 mongo-java-driver JAR 添加到您的项目中(在 maven Central 中可用)。
- 以与 HibernateTemplate 类似的方式使用提供的 MongoTemplate 类。例如:
mongoTemplate.findById(id, MyClass.class);
mongoTemplate.insert(myObject);
这是一个带有代码的具体示例:use-spring-and-hibernate-with-mongodb
如果您使用的是 Java,那么您可以使用Hibernate OGM ,它为NoSQL数据库提供 Java 持久性支持。
有关详细信息,请访问http://hibernate.org/ogm/
之前有很好的工作:
- http://pragmaticintegrator.wordpress.com/2011/07/14/use-spring-and-hibernate-with-mongodb/
- http://pragmaticintegrator.wordpress.com/2011/07/27/unit-test-your-springhibernate-and-mongodb-setup/#comments
参考这些链接。这将对您有所帮助。
愿此博客有所帮助:http : //drorbr.blogspot.com/2010/02/migrating-springhibernate-application.html Dror Bereznitsky 在这里很好地描述了如何将基于 sping/hibernate 的解决方案与 mongodb 集成。
好吧,只是给你一个例子,我正在做一些类似的事情。在 ColdFusion 中,集成了 Hibernate,为了保存您的 Hibernate 对象,您必须执行 EntitySave(Obj)。然而,我们所做的是构建 Orm 对象,然后使用 mongoDB Coldfusion 组件并通过 mongo.Save(obj,collectionName) 保存对象。
我认为 Hibernate 提供了所需的功能。看看这个,在他们的官方网站上找到的:在一个应用程序中混合多个 NoSQL 数据存储,例如使用 Neo4j 来制作你的友谊图,使用 MongoDB 来制作你的博客文章。或者混合使用 NoSQL 和关系数据库。