MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Menu Docs
Página inicial do Docs
/ /

Comece a usar a extensão MongoDB para hibernação ORM

O Hibernar ORM permite que você use objetos Java para executar operações do banco de dados , e você pode usar a Extensão MongoDB para Hibernado ORM para simplificar as interações do seu aplicativo com dados MongoDB . Este guia mostra como instalar a extensão ORM do Hibername, configurar uma implementação do MongoDB e criar um aplicação Java que define classes mapeadas para collections do MongoDB .

Dica

O MongoDB Atlas é um serviço de banco de dados em nuvem totalmente gerenciado que hospeda seu Implantações do MongoDB. Você pode criar sua própria implantação do MongoDB Atlas gratuita (nenhum cartão de crédito exigido) seguindo as etapas deste guia.

1

Antes de começar a desenvolver, verifique se você tem as seguintes dependências instaladas em sua máquina local:

  • Java versão 17 ou posterior

  • Ambiente de desenvolvimento integrado (IDE), como IntelliJ IDEA ou Eclipse

Observação

Este tutorial mostra como criar um aplicação usando Maven ou Gradle em um IDE. Se você não usar um IDE, consulte Construindo o Maven ou Criando Novas Construções Gradle para saber como definir seu projeto.

2

No seu IDE, crie um novo projeto Maven ou Gradle denominado MongoHibernateQuickstart. Para projetos Maven, adicione a seguinte dependência ao seu arquivo pom.xml:

<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-hibernate</artifactId>
<version>1.0.0-alpha0</version>
</dependency>
</dependencies>

Para projetos Gradle, adicione a seguinte dependência ao seu arquivo build.gradle:

dependencies {
implementation("org.mongodb:mongodb-hibernate:1.0.0-alpha0")
}

Em seu IDE, certifique-se de recarregar ou realizar a sincronização do seu projeto para concluir a instalação da extensão Hibernate ORM.

Depois de concluir essas etapas, você terá a extensão Hibername ORM instalada e um novo projeto Maven ou Gradle configurado em seu IDE.

Você pode criar uma implantação MongoDB de camada gratuita no MongoDB Atlas para armazenar e gerenciar seus dados. O MongoDB Atlas hospeda e gerencia seu banco de dados MongoDB na nuvem.

1

Complete o guia Iniciar MongoDB para configurar uma nova conta Atlas e carregar dados de amostra em uma nova implantação MongoDB de camada grátis. Siga as instruções nas abas Cloud Deployment para criar sua implantação do MongoDB Atlas na nuvem.

2

Depois de criar seu usuário de banco de dados, salve o nome de banco de dados e a senha do banco de dados desse usuário em um local seguro para uso em uma etapa futura.

Após concluir estas etapas, você terá uma nova implantação de camada grátis do MongoDB no Atlas, credenciais de trigger de banco de dados e dados de exemplo carregados no seu reconhecimento de data center.

Você pode se conectar à sua implantação do MongoDB fornecendo um URI de conexão, também chamado de connection string, que instrui o driver sobre como se conectar a uma implantação do MongoDB e como se comportar enquanto estiver conectado.

A cadeia de conexão inclui o nome do host ou endereço IP e porta de sua implantação, o mecanismo de autenticação, as credenciais do usuário quando aplicável, e opções de conexão.

1

Para recuperar a string de conexão da implantação criada na etapa anterior, faça login na sua conta do Atlas e navegue até a seção Clusters. Clique no botão Connect para sua nova implantação, como mostrado na seguinte captura de tela:

O botão de conexão na seção de clusters da UI do Atlas

Em seguida, vá para a seção Connect your application. Selecione "Java" no menu de seleção Driver e a versão que melhor corresponde à versão instalada no menu de seleção Version.

2

Clique no botão à direita da string de conexão para copiá-la para a área de transferência, como mostrado na seguinte captura de tela:

O botão de cópia da connection string na interface de usuário do Atlas
3

Salve sua string de conexão em um local seguro para uso posterior. Substitua os espaços reservados da string de conexão <db_username> e <db_password> pelo nome de usuário e senha do usuário do banco de dados .

4

Para se conectar ao banco de dados de amostra sample_mflix, que seu aplicação usará nas próximas etapas, adicione o nome do banco de dados à sua string de conexão.

Sua string de conexão deve ser semelhante ao exemplo a seguir:

mongodb+srv://<db_username>:<db_password>@<cluster>/sample_mflix?<options>
5

Antes de adicionar sua string de conexão a um arquivo de configuração XML em uma etapa futura, você deve codificar os seguintes caracteres especiais em sua string de conexão:

  • &: Substitua por &amp;

  • ': Substitua por &apos;

  • ": Substitua por &quot;

  • <: Substitua por &lt;

  • >: Substitua por &gt;

Por padrão, sua string de conexão do Atlas inclui opções de conexão separadas pelo caractere &. Certifique-se de codificar em XML esse caractere.

Após completar estas etapas, você tem uma string de conexão que contém seu nome de usuário, senha e banco de dados.

Depois de instalar a extensão ORM do Hibername e criar um cluster MongoDB Atlas , você pode criar um aplicação Java que se conecta ao MongoDB.

1

Navegue até o diretório MongoHibernateQuickstart do seu projeto src/main/resources e crie um novo arquivo denominado hibernate.cfg.xml, que armazena as definições de configuração do seu aplicativo.

Copie o seguinte código para este arquivo:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">com.mongodb.hibernate.dialect.MongoDialect</property>
<property name="hibernate.connection.provider_class">
com.mongodb.hibernate.jdbc.MongoConnectionProvider
</property>
<property name="jakarta.persistence.jdbc.url">
connection-string
</property>
<property name="hibernate.show_sql">true</property>
<mapping class="org.example.Movie"/>
</session-factory>
</hibernate-configuration>

Na jakarta.persistence.jdbc.url propriedade , substitua connection-string o espaço reservado pela string de conexão que você criou na etapa anterior.

2

Observação

Diretório de pacotes padrão

Este tutorial usa o pacote org.example padrão do Maven e do Gradle e adiciona arquivos de aplicativo ao diretório src/main/java/org/example. Se você usar um nome de pacote diferente, certifique-se de criar seus arquivos no diretório correspondente.

No diretório src/main/java/org/example do seu projeto, crie um novo arquivo chamado HibernateUtil.java. Esta classe de utilitário cria um SessionFactory com base em seu arquivo de configuração do hibernate.cfg.xml.

Copie o seguinte código para este arquivo:

package org.example;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUtil {
private static final SessionFactory SESSION_FACTORY =
new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
private HibernateUtil() {}
public static SessionFactory getSessionFactory() { return SESSION_FACTORY; }
}
3

No diretório org/example do seu projeto, crie um novo arquivo chamado Movie.java. Esse arquivo contém sua entidade Movie, que representa a coleção de amostras sample_mflix.movies dos conjuntos de dados de amostra do Atlas.

Copie o seguinte código para este arquivo:

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 arquivo define uma entidade Movie com os seguintes campos:

  • id: o identificador exclusivo do filme, mapeado para o campo MongoDB _id .

  • title: O título do filme.

  • year: o ano em que o filme foi lançado.

  • cast: uma lista de strings representando os membros do elenco do filme.

4

No diretório org/example do seu projeto, crie um novo arquivo chamado Main.java. Esse arquivo contém sua classe de aplicação principal, que armazena a lógica do seu aplicativo.

Copie o seguinte código para este arquivo:

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();
}
}

Depois de concluir essas etapas, você terá um aplicativo Java configurado para usar a extensão ORM do Hibernate e se conectar à sua implantação MongoDB. Seu aplicativo tem a seguinte estrutura de arquivo:

MongoHibernateQuickstart
├── src
│ └── main
│ ├── java
│ │ └── org/example
│ │ ├── HibernateUtil.java
│ │ ├── Main.java
│ │ └── Movie.java
│ └── resources
│ └── hibernate.cfg.xml
├── .gitignore
├── pom.xml (for Maven projects)
└── build.gradle (for Gradle projects)

Você pode executar queries em seus objetos Movie, que a extensão traduz em queries do MongoDB.

1

Navegue até seu arquivo Main.java e cole o seguinte código abaixo do comentário // 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 usa a linguagem de query do Hibernate ORM (HQL) para recuperar sample_mflix.movies documentos que têm um valor title de "Little Women". Em seguida, imprime os valores title e year de cada resultado.

Dica

Para aprender mais sobre HQL, consulte Linguagem de query do Hibernar no guia de usuário do Hibernado ORM.

2

Execute o arquivo Main.java em seu IDE. Sua saída contém detalhes sobre o comando de banco de dados e os documentos recuperados:

Hibernate: {"aggregate": "movies", "pipeline": [{"$match": {"title": {"$eq": {"$undefined": true}}}},
{"$project": {"_id": true, "cast": true, "plot": true, "title": true, "year": true}}]}
Title: Little Women, Year: 1949
Title: Little Women, Year: 1994

Você pode gravar dados em sua implantação do MongoDB criando e modificando seus objetos Movie .

1

Em seu arquivo Main.java, adicione o seguinte código para criar uma instância de entidade Movie chamada myMovie e salvá-la no banco de dados:

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 = 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 cria uma nova instância de entidade Movie e utiliza o método session.persist() para salvá-la no banco de dados.

2

Adicione o seguinte código ao seu arquivo Main.java para atualizar a instância do Movie que você criou na etapa anterior:

var currentCast = new ArrayList<>(myMovie.getCast());
currentCast.add("Jennifer Grey");
myMovie.setCast(currentCast);
System.out.println("Movie updated with new cast: " + myMovie.getCast());

Este código recupera o valor cast atual, adiciona um novo nó e atualiza o campo cast da instância de entidade myMovie. A extensão ORM do Hibernar aplica esta alteração ao documento correspondente no banco de dados.

3

Adicione o seguinte código ao seu arquivo Main.java para excluir a instância de entidade myMovie:

session.remove(myMovie);
System.out.println("Movie deleted with ID: " + myMovie.getId());

Este código exclui a instância da entidade myMovie e seu documento correspondente do banco de dados.

4

Execute o arquivo Main.java em seu IDE. Sua saída contém detalhes sobre suas operações de gravação:

Hibernate: {"insert": "movies", "documents": [{"cast": {"$undefined": true}, "plot": {"$undefined": true}, "title": {"$undefined": true}, "year": {"$undefined": true}, "_id": {"$undefined": true}}]}
Hibernate: {"delete": "movies", "deletes": [{"q": {"_id": {"$eq": {"$undefined": true}}}, "limit": {"$numberInt": "0"}}]}
Movie created with ID: <ObjectId>
Movie updated with new cast: [Jesse Eisenberg, Kieran Culkin, Will Sharpe, Jennifer Grey]
Movie deleted with ID: <ObjectId>

Parabéns por concluir o tutorial!

Observação

Se você tiver problemas neste tutorial, enviar feedback usando a aba Rate this page no lado direito desta página.

Você pode encontrar suporte para perguntas gerais usando a tag MongoDB Stack Overflow ou a comunidade MongoDB Reddit.

Neste tutorial, você criou um aplicação Java que se conecta a um sistema do MongoDB hospedado no MongoDB Atlas e usa a extensão Hibername ORM para interagir com seus dados.

Para saber mais sobre a extensão Hibername ORM, consulte os seguintes recursos:

Para visualizar um tutorial de Introdução que mostra como instalar a extensão ORM do Hibername e interagir com os dados do livro, consulte a postagem do blog Introdução ao Hibername ORM e MongoDB Foojay.

Voltar

Visão geral