2010-01-28 13 views
36

Ich suche nach Ressourcen, wie MongoDB mit Hibernate zu integrieren (vorzugsweise aus dem Frühjahr), so dass ich zwischen einer RDBMS und einer NoSql-Alternative wechseln kann: Hat jemand Erfahrung dabei?Hibernate mit MongoDB

+2

bitte einen Blick auf Hibernate OGM haben. Es ist noch jung, aber sie haben ein paar interessante Dinge vor sich. –

Antwort

63

Sie können dies nicht leicht tun. Der Punkt von Hibernate besteht darin, Java-Objekte einer relationalen Datenbank zuzuordnen. Obwohl Hibernate viele Details abstrahiert, müssen Sie verstehen, wie relationale Datenbanken mit Dingen wie Fremd- und Primärschlüsseln und den Auswirkungen auf die Leistung von ausgeführten Abfragen arbeiten. MongoDB erfordert eine völlig andere Art, Ihre Datenbank so zu gestalten, dass sie sich auf Objekte anstatt auf Spalten und Tabellen konzentriert. Während Sie in der Lage sein können, einen Hibernate-Dialekt für MongoDB zu erstellen, indem Sie einen Entwurf erstellen, der sowohl mit einer relationalen Datenbank als auch mit einer NoSql-Datenbank funktioniert, erhalten Sie ein Design, das auf beiden Seiten schlecht funktioniert.

+6

Bitte beachten Sie Hibernate OGM. Es ist noch jung, aber sie haben ein paar interessante Dinge vor sich. –

0

Nun, nur um Ihnen ein Beispiel zu geben, mache ich etwas Ähnliches. In ColdFusion ist Hibernate integriert, und um Ihr Hibernate-Objekt zu speichern, müssen Sie EntitySave (Obj) ausführen. Wir haben jedoch das Orm-Objekt erstellt und verwenden dann eine mongoDB-Coldfusion-Komponente und speichern das Objekt einfach, indem wir mongo.Save (obj, collectionName) aufrufen.

21

Die Migration wäre einfacher, wenn Sie Spring MongoTemplate (ähnlich wie HibernateTemplate) verwenden.
Zu seinen Features gehört die Unterstützung von JPA-Annotationen (obwohl ich nicht sicher bin, in welchem ​​Umfang).
Weitere: http://www.springsource.org/spring-data/mongodb

Sie folgendes benötigen:

  1. spring-data-mongodb JAR zu einem Projekt (erhältlich in Maven Zentral).
  2. Fügen Sie Ihrem Projekt mongo-java-driver JAR hinzu (verfügbar in maven central).
  3. Verwenden Sie die mitgelieferte MongoTemplate-Klasse in einer ähnlichen Weise zu HibernateTemplate. Z.B .: mongoTemplate.findById(id, MyClass.class);
    mongoTemplate.insert(myObject);

Hier ist ein konkretes Beispiel mit Code: use-spring-and-hibernate-with-mongodb

+0

Beispiel, Link funktioniert nicht, können Sie das korrigieren? Vielen Dank! –

+0

@Vinit Fixed the link –

2

Es gibt auch kundera, die JPA-Annotationen verwendet einen mongodb lesen/schreiben Ihr Objekt von/nach. Wenn Sie mit dem Winterschlaf vertraut sind, sollte es ziemlich einfach zu verwenden sein.

Ich probierte kürzlich Morphia, die den gleichen Ansatz, aber mit eigenen Anmerkungen nimmt. Es funktioniert gut

27

Was ist mit Hibernate OGM? Es bietet JPA für No-SQL Datenbanken.

+0

Insbesondere MongoDB ist einer der Dialoge von Hibernate OGM out of the box. Weitere Informationen erhalten Sie in der [Referenzanleitung] (https://docs.jboss.org/hibernate/ogm/4.1/reference/en-US/html_single/#ogm-mongodb). – Gunnar

1

Der Vollständigkeit halber unterstützt PlayORM jetzt auch MongoDB. PlayORM ist eine NoSQL-Mapping-Lösung für Objekte, sodass Sie POJOs schreiben und sich mit allen Details des Marshalling/Unmarshalling auf MongoDB befassen können. Besuchen Sie seine documentation hier

0

Wenn Sie Java verwenden, dann können Sie Hibernate OGM es verwenden, bietet Java Persistence Unterstützung für NoSQL Datenbanken.

Für weitere Informationen besuchen http://hibernate.org/ogm/