2010-01-28 28 views
36

Estoy buscando recursos que muestren cómo integrar MongoDB con Hibernate (preferiblemente desde dentro de la primavera) para poder cambiar entre un RDBMS y una alternativa NoSql: ¿Alguien tiene experiencia haciendo esto?Hibernate con MongoDB

+2

favor echar un vistazo a Hibernate OGM. Todavía es joven, pero tienen algunas cosas interesantes por venir. –

Respuesta

63

No puede hacer esto fácilmente. El objetivo de Hibernate es asignar objetos de Java a una base de datos relacional. Aunque Hibernate abstrae una gran cantidad de detalles, aún necesita comprender cómo funcionan las bases de datos relacionales con elementos como claves externas y principales, y las implicaciones de rendimiento de las consultas que ejecuta. MongoDB requiere una manera completamente diferente de diseñar su base de datos centrándose en objetos en lugar de columnas y tablas. mientras que usted puede crear un dialecto de Hibernate para MongoDB, crear un diseño que funcione tanto en una base de datos relacional como en una base de datos NoSql le dará un diseño que funciona mal en ambos.

+6

por favor eche un vistazo a Hibernate OGM. Todavía es joven, pero tienen algunas cosas interesantes por venir. –

0

Bueno, solo por poner un ejemplo, estoy haciendo algo similar. En ColdFusion, Hibernate está integrado y para guardar su Objeto Hibernate, debe hacer EntitySave (Obj). Sin embargo, lo que hemos hecho es construir el objeto Orm, y luego usar un componente mongoDB Coldfusion y simplemente guardar el objeto yendo mongo.Save (obj, collectionName).

21

La migración sería más fácil si usa Spring MongoTemplate (similar a HibernateTemplate).
Entre sus características es compatible con las anotaciones JPA (aunque no estoy seguro de en qué medida).
Ver más: http://www.springsource.org/spring-data/mongodb

que necesitará lo siguiente:

  1. Añadir JAR primavera-data-mongodb a su proyecto (disponible en experta en central).
  2. Agregue mongo-java-driver JAR a su proyecto (disponible en maven central).
  3. Utilice la clase MongoTemplate proporcionada de manera similar a para HibernateTemplate. Ej .: mongoTemplate.findById(id, MyClass.class);
    mongoTemplate.insert(myObject);

Aquí está un ejemplo concreto con el código: use-spring-and-hibernate-with-mongodb

+0

Ejemplo, el enlace no funciona, ¿puedes corregirlo? ¡Gracias! –

+0

@Vinit Se corrigió el enlace –

2

También hay kundera, que utiliza JPA-anotaciones para leer/escribir el objeto desde/a un mongodb. Si estás familiarizado con hibernate, debería ser bastante sencillo de usar.

Recientemente probé Morphia, que tiene el mismo enfoque, pero con sus propias anotaciones. Funciona bien

27

¿Qué hay de Hibernate OGM? Proporciona JPA para las bases de datos No-SQL.

+0

Específicamente, MongoDB es uno de los dialectos de Hibernate OGM listos para usar. Consulte la [guía de referencia] (https://docs.jboss.org/hibernate/ogm/4.1/reference/en-US/html_single/#ogm-mongodb) para obtener más información. – Gunnar

1

Para completar, PlayORM también es compatible con MongoDB ahora. PlayORM es una solución de mapeo NoSQL objeto para que pueda escribir POJO y dejar que se ocupe de todos los detalles de la clasificación/desemparejamiento a MongoDB. Visita su documentation aquí

0

Si está utilizando Java, puede utilizar Hibernate OGM que proporciona soporte para Java Persistence NoSQL bases de datos.

Para más detalles visita http://hibernate.org/ogm/