Overview
Hibernate ORM te permite utilizar objetos Java para realizar operaciones en la base de datos, y puedes utilizar la extensión de MongoDB para Hibernate ORM para simplificar las interacciones de tu aplicación con los datos de MongoDB. Esta guía muestra cómo instalar la extensión Hibernate ORM, configurar una implementación de MongoDB y crear una aplicación Java que defina clases mapeadas a colecciones de MongoDB.
Tip
MongoDB Atlas es un servicio de base de datos gestionada en la nube que aloja las implementaciones de MongoDB. Se puede crear una implementación propia gratuita de MongoDB Atlas (sin necesidad de tarjeta de crédito) siguiendo los pasos de esta guía.
Descargue e instale
Instale las dependencias
Antes de comenzar a desarrollar, asegúrese de tener instaladas las siguientes dependencias en su máquina local:
Java versión 17 o posterior
Entorno de desarrollo integrado (IDE), como IntelliJ IDEA o Eclipse
Nota
Este tutorial muestra cómo crear una aplicación utilizando Maven o Gradle en un IDE. Si no utiliza un IDE, consulte Compilar Maven o Crear nuevas compilaciones de Gradle para aprender cómo configurar su proyecto.
Instala la extensión
En tu IDE, crea un nuevo proyecto de Maven o Gradle llamado MongoHibernateQuickstart. Por proyectos Maven, añada la siguiente dependencia a su archivo pom.xml:
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-hibernate</artifactId> <version>1.0.0-alpha0</version> </dependency> </dependencies>
Para proyectos Gradle, añada la siguiente dependencia a su archivo build.gradle:
dependencies { implementation("org.mongodb:mongodb-hibernate:1.0.0-alpha0") }
En su IDE, asegúrese de volver a cargar o sincronizar su proyecto para completar la instalación de la extensión Hibernate ORM.
Después de completar estos pasos, tienes la extensión Hibernate ORM instalada y un nuevo proyecto Maven o Gradle configurado en tu IDE.
Cree una implementación de MongoDB
Se puede crear una implementación de nivel gratuito de MongoDB en MongoDB Atlas para almacenar y gestionar los datos. MongoDB Atlas aloja y gestiona la base de datos MongoDB en la nube.
Cree una implementación gratuita de MongoDB en Atlas
Completa la guía de MongoDB Primeros pasos para configurar una nueva cuenta de Atlas y cargar datos de muestra en una nueva implementación de MongoDB de nivel gratuito. Sigue las instrucciones en el Cloud Deployment Pestañas para crear su implementación de MongoDB Atlas en la nube.
Después de completar estos pasos, habrá una nueva implementación de nivel gratuito de MongoDB en Atlas, credenciales de usuario de base de datos y datos de muestra cargados en la base de datos.
Crear una cadena de conexión
Puede conectarse a su implementación de MongoDB proporcionando un URI de conexión, también llamado cadena de conexión, que instruye al controlador sobre cómo conectarse a una implementación de MongoDB y cómo comportarse mientras está conectado.
La cadena de conexión incluye el nombre de host o la dirección IP y el puerto de la implementación, el mecanismo de autenticación, las credenciales de usuario cuando sea aplicable, y las opciones de conexión.
Encuentre su cadena de conexión de MongoDB Atlas
Para recuperar la cadena de conexión para la implementación que se creó en el paso anterior, se debe iniciar sesión en la cuenta de Atlas y navegar a la sección Clusters. Se debe hacer clic en el botón Connect para la nueva implementación, como se muestra en la siguiente captura de pantalla:

Luego, procede a la sección Connect your application. Selecciona "Java" del menú de selección Driver y la versión que mejor coincida con la versión que ha instalado del menú de selección Version.
Agregue una base de datos a su cadena de conexión
Para conectarte a la base de datos de muestra sample_mflix, que tu aplicación usa en los próximos pasos, agrega el nombre de la base de datos a tu cadena de conexión.
Tu cadena de conexión debería parecerse al siguiente ejemplo:
mongodb+srv://<db_username>:<db_password>@<cluster>/sample_mflix?<options>
Luego de completar estos pasos, tendrá una cadena de conexión que contiene su nombre de usuario, contraseña y base de datos.
Configura tu aplicación
Después de instalar la extensión Hibernate ORM y crear un clúster MongoDB Atlas, puede crear una aplicación Java que se conecte a MongoDB.
Conecte su aplicación a MongoDB
Navegue al directorio src/main/resources de su proyecto MongoHibernateQuickstart y cree un nuevo archivo llamado hibernate.properties, que almacena la configuración de su aplicación.
Copia el siguiente código en este archivo:
hibernate.dialect=com.mongodb.hibernate.dialect.MongoDialect hibernate.connection.provider_class=com.mongodb.hibernate.jdbc.MongoConnectionProvider jakarta.persistence.jdbc.url=<connection string>
En la jakarta.persistence.jdbc.url propiedad, reemplace el <connection string> marcador de posición con la cadena de conexión que creó en el paso anterior.
Crea una clase utilitaria para gestionar sesiones
Nota
Directorio de paquetes predeterminado
Este tutorial utiliza el paquete org.example por defecto de Maven y Gradle y agrega archivos de la aplicación al directorio src/main/java/org/example. Si usas un nombre de paquete diferente, asegúrate de crear tus archivos en su directorio correspondiente.
En el directorio src/main/java/org/example de tu proyecto, crea un archivo llamado HibernateUtil.java. Esta clase de utilidad crea un archivo SessionFactory basado en tu archivo de configuración.
Copia el siguiente código en este archivo:
package org.example; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public final class HibernateUtil { private static final SessionFactory SESSION_FACTORY = new Configuration() .addAnnotatedClass(Movie.class) .buildSessionFactory(); private HibernateUtil() {} public static SessionFactory getSessionFactory() { return SESSION_FACTORY; } }
Define tu Movie entidad
En el directorio org/example de tu proyecto, crea un nuevo archivo llamado Movie.java. Este archivo contiene tu entidad Movie, que representa la colección de muestras sample_mflix.movies de los conjuntos de datos de muestra de Atlas.
Copia el siguiente código en este archivo:
package org.example; import com.mongodb.hibernate.annotations.ObjectIdGenerator; import org.bson.types.ObjectId; import java.util.List; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Table; public class Movie { private ObjectId id; private String title; private String plot; private int year; private List<String> cast; public Movie(String title, String plot, int year, List<String> cast) { this.title = title; this.plot = plot; this.year = year; this.cast = cast; } public Movie() { } public ObjectId getId() { return id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getPlot() { return plot; } public void setPlot(String plot) { this.plot = plot; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public List<String> getCast() { return cast; } public void setCast(List<String> cast) { this.cast = cast; } }
Este archivo define una entidad Movie con los siguientes campos:
idEl identificador único de la película, mapeado al campo_idde MongoDB.title: El título de la película.year: El año en que se estrenó la película.castUna lista de cadenas que representa los nodos del reparto de la película.
Definir su clase principal de la aplicación
En el directorio org/example de tu proyecto, crea un nuevo archivo llamado Main.java. Este archivo contiene tu clase principal de la aplicación, que almacena la lógica de la aplicación.
Copia el siguiente código en este archivo:
package org.example; import org.hibernate.Transaction; import org.hibernate.Session; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { var sf = HibernateUtil.getSessionFactory(); Session session = sf.openSession(); Transaction tx = session.beginTransaction(); // Add CRUD operations here tx.commit(); session.close(); sf.close(); } }
Tras completar estos pasos, tendrá una aplicación Java configurada para usar la extensión ORM de Hibernate y conectarse a su implementación de MongoDB. Su aplicación tiene la siguiente estructura de archivos:
MongoHibernateQuickstart ├── src │ └── main │ ├── java │ │ └── org/example │ │ ├── HibernateUtil.java │ │ ├── Main.java │ │ └── Movie.java │ └── resources │ └── hibernate.properties ├── .gitignore ├── pom.xml (for Maven projects) └── build.gradle (for Gradle projects)
Ejecuta una query de muestra
Puedes ejecutar consultas en tus objetos Movie, que la extensión traduce en consultas de MongoDB.
Ejecuta una query en el campo title
Navegue hasta su archivo Main.java y pegue el siguiente código debajo del comentario // Add CRUD operations here:
var searchTitle = "Little Women"; var results = session.createQuery("from Movie m where m.title = :t", Movie.class) .setParameter("t", searchTitle) .getResultList(); for (var m : results) { System.out.println("Title: " + m.getTitle() + ", Year: " + m.getYear()); }
Este código utiliza el lenguaje de consulta Hibernate (HQL) de Hibernate ORM para recuperar sample_mflix.movies documentos cuyo valor title es "Little Women". A continuación, imprime los valores title y year de cada resultado.
Tip
Para obtener más información sobre HQL, consulte Hibernate languaje del query en la guía del usuario de Hibernate ORM.
Escribe datos en MongoDB
Se puede guardar datos en la implementación de MongoDB creando y modificando los objetos Movie.
Insertar un documento en la colección movies .
En su archivo Main.java, agregue el siguiente código para crear una instancia de entidad Movie llamada myMovie y guárdela en la base de datos:
var title = "A Real Pain"; var plot = "Mismatched cousins David and Benji tour Poland to honor their grandmother. " + "Their adventure becomes complicated as old tensions resurface while exploring their family history."; var year = 2024; var cast = new ArrayList<>(List.of("Jesse Eisenberg", "Kieran Culkin", "Will Sharpe")); var myMovie = new Movie(title, plot, year, cast); session.persist(myMovie); System.out.println("Movie created with ID: " + myMovie.getId());
Este código crea una nueva instancia de entidad Movie y utiliza el método session.persist() para guardarla en la base de datos.
Actualizar un documento
Agrega el siguiente código a tu archivo Main.java para actualizar la instancia Movie que creaste en el paso anterior:
myMovie.getCast().add("Jennifer Grey"); System.out.println("Movie updated with new cast: " + myMovie.getCast());
Este código recupera el valor actual de cast y añade un nuevo miembro al reparto. La extensión Hibernate ORM aplica este cambio al documento correspondiente de la base de datos.
Borrar un documento
Agrega el siguiente código a tu archivo Main.java para borrar la instancia de la entidad myMovie:
session.remove(myMovie); System.out.println("Movie deleted with ID: " + myMovie.getId());
Este código elimina la instancia de la entidad myMovie y su documento correspondiente de la base de datos.
Próximos pasos
¡Felicidades por completar el tutorial!
Nota
Si encuentra algún problema en este tutorial, envíe sus comentarios utilizando la pestaña Rate this page en el lado derecho de esta página.
Puede encontrar soporte para preguntas generales mediante la etiqueta Stack Overflow de MongoDB o la comunidad de Reddit de MongoDB.
En este tutorial, creaste una aplicación Java que se conecta a una implementación MongoDB alojada en MongoDB Atlas y utiliza la extensión Hibernate ORM para interactuar con tus datos.
Para obtener más información sobre la extensión ORM de Hibernate, consulte los siguientes recursos:
Extensión Hibernate ORM Documentación de la API
Código fuente demongo-hibernate en GitHub
Documentación de Hibernate ORM
Documentaciónde persistencia de Yakarta
Para ver un tutorial para comenzar que muestra cómo instalar la extensión Hibernate ORM e interactuar con datos de libros, consulta la Guía para comenzar con Hibernate ORM y MongoDB entrada de blog Foojay.
