Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hibernate with MongoDB

I'm looking for resources showing how to integrate MongoDB with Hibernate (preferably from within spring) so that I can switch between a RDBMS and a NoSql alternative: does anyone have experience doing this?

like image 499
adwk Avatar asked Jan 28 '10 08:01

adwk


People also ask

Can you use Hibernate with MongoDB?

How to use Hibernate OGM with MongoDB? To get started with Hibernate MongoDB, you first need to build the OGM from Source via GitBug. To include OGM in your Hibernate MongoDB project, just include one more dependency in your list of dependencies. Next, to define the persistence unit, create a META-INF/persistence.

Can Hibernate be used for NoSQL?

Hibernate traditionally offers an Object Relational Mapping (ORM) engine for relational databases. Hibernate OGM engine extends its functionality to support NoSQL datastores. The primary benefit of using it is the consistency of the JPA interface across relational and NoSQL datastores.

Does MongoDB Spring data Hibernate?

Spring Data JPA helps you to connect to relational databases using ORM frameworks. The default JPA implementation used is Hibernate. The core interface is the JpaRepository.

Can I use ORM in MongoDB?

Unfortunately there aren't many Java ORM libraries available for MongoDB, but there are a few like morphia-(A type-safe Java library for MongoDB), and spring-data( the MongoDB implementation of the Spring Data umbrella project).


3 Answers

You can't easily do this. The point of Hibernate is to map Java Objects to a relational database. Although Hibernate abstracts a lot of details away you still need to understand how relational databases work with things such as foreign and primary keys, and the performance implications of queries you run. MongoDB requires an entire different way of designing your database focusing on objects instead of columns and tables. while you may be able to create a Hibernate dialect for MongoDB creating a design that would work on both a relational database and a NoSql database will give you a design that works poorly on both.

like image 135
Jared Avatar answered Oct 05 '22 22:10

Jared


What about Hibernate OGM? It provides JPA for No-SQL databases.

like image 41
jacktrades Avatar answered Oct 06 '22 00:10

jacktrades


Migration would be easier if you use Spring MongoTemplate (similar to HibernateTemplate).
Among its features is support for JPA annotations (although, I'm not sure to what extent).
See more: http://www.springsource.org/spring-data/mongodb

You'll need the following:

  1. Add spring-data-mongodb JAR to your project (available in maven central).
  2. Add mongo-java-driver JAR to your project (available in maven central).
  3. Use the provided MongoTemplate class in a similar manner to HibernateTemplate. E.g.: mongoTemplate.findById(id, MyClass.class);
    mongoTemplate.insert(myObject);

Here's a concrete example with code: use-spring-and-hibernate-with-mongodb

like image 42
Israel Zalmanov Avatar answered Oct 05 '22 22:10

Israel Zalmanov