Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Introducción a la extensión ORM de Hibernate

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.

1

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.

2

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.

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.

1

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.

2

Después de crear el usuario de base de datos, se deben guardar el nombre de usuario y la contraseña de ese usuario en una ubicación segura para usarlos en un paso próximo.

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.

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.

1

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:

El botón de conexión en la sección de clústeres de la interfaz de usuario de Atlas

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.

2

Haz clic en el botón a la derecha de la cadena de conexión para copiarla en el portapapeles, como se muestra en la siguiente captura de pantalla:

El botón de copia de la cadena de conexión en la Interfaz de Usuario de Atlas
3

Guarde su cadena de conexión en un lugar seguro para usarla más adelante. Reemplace los <db_username> y <db_password> marcadores de posición de la cadena de conexión con el nombre de usuario y la contraseña de su usuario de base de datos.

4

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.

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.

1

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.

2

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; }
}
3

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;
@Entity
@Table(name = "movies")
public class Movie {
@Id
@ObjectIdGenerator
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 _id de 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.

4

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)

Puedes ejecutar consultas en tus objetos Movie, que la extensión traduce en consultas de MongoDB.

1

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.

2

Ejecuta el archivo Main.java en tu IDE. Su resultado contiene detalles sobre el comando de base de datos y los documentos recuperados:

Title: Little Women, Year: 1949
Title: Little Women, Year: 1994

Se puede guardar datos en la implementación de MongoDB creando y modificando los objetos Movie.

1

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.

2

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.

3

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.

4

Ejecute el archivo Main.java en su IDE. La salida contiene detalles sobre sus operaciones de escritura:

Movie created with ID: <ObjectId>
Movie updated with new cast: [Jesse Eisenberg, Kieran Culkin, Will Sharpe, Jennifer Grey]
Movie deleted with ID: <ObjectId>

¡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:

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.

Volver

Overview