Visão geral
Neste tutorial, você pode aprender a criar um aplicação Spring Boot que armazena entidades Java Persistence API (JPA) no MongoDB usando a extensão ORM Hibernado. O aplicação define uma entidade Movie, um repositório Spring Data JPA e uma query que é executada na inicialização.
Antes de começar, conclua as etapas Criar uma MongoDB Deployment e Criar uma connection string do tutorial Introdução à extensão ORM do Hibername. Essas etapas criam a implantação do Atlas , dados de exemplo e string de conexão que este tutorial utiliza.
Instale o aplicativo inicial
Criar um projeto do Spring Boot
Crie um projeto Spring Boot 4.x denominado MongoHibernateSpringQuickstart. Você pode gerar o projeto usando o Spring Initializr ou criá-lo em seu IDE.
O Spring Initializr gera uma classe de aplicação principal com o nome do seu projeto, como MongoHibernateSpringQuickstartApplication.java. Se você usar o Spring Initializr para gerar seu projeto , exclua o arquivo de classe do aplicação principal gerado automaticamente. Você criará um arquivo de aplicação principal para este projeto denominado Movie Application mais tarde neste tutorial. Se o seu projeto contiver duas classes de aplicação principais, seu aplicação não iniciará com um erro Unable to find a single main class.
Adicione a dependência inicial
Para projetos Maven, adicione a seguinte dependência ao seu arquivo pom.xml:
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-hibernate-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency> </dependencies>
Para projetos Gradle, adicione a seguinte dependência ao seu arquivo build.gradle:
dependencies { implementation("org.mongodb:mongodb-hibernate-spring-boot-starter:1.0.0") }
Substitua a versão gerenciada do ORM do Hibernar
O iniciante exige Hibernar ORM 7.4 ou posterior. O Spring Boot gerencia a versão do Hibernar ORM por meio de sua lista de materiais (BOM), e algumas versões do Spring Boot 4.x gerenciam uma versão anterior do Hibername ORM do que a versão que o inicial exige. Se a versão gerenciada for anterior a 7.4, seu aplicação falhará ao iniciar e a extensão ORM do Hibername lançará um NoSuchMethodError.
Para substituir a versão gerenciada em um projeto Maven, adicione a seguinte propriedade ao seu arquivo pom.xml:
<properties> <hibernate.version>7.4.7.Final</hibernate.version> </properties>
Para substituir a versão gerenciada em um projeto Gradle, adicione a seguinte linha ao seu arquivo build.gradle:
ext['hibernate.version'] = '7.4.7.Final'
Recarregue ou sincronize seu projeto para concluir a instalação.
Configurar seu aplicativo
Defina as propriedades do seu aplicação
No diretório src/main/resources do seu projeto, abra o arquivo application.properties e adicione as seguintes propriedades:
spring.jpa.database-platform=MongoDB spring.mongodb.uri=<connection string> spring.jpa.properties.com.mongodb.hibernate.semantics.nulls=MQL
Substitua o espaço reservado <connection string> pela string de conexão sample_mflix que você criou na etapa Criar uma connection string do tutorial de Introdução à extensão ORM do Hibername. Sua string de conexão deve ser semelhante ao exemplo a seguir:
mongodb+srv://<db_username>:<db_password>@<cluster>/sample_mflix?<options>
As propriedades do aplicação que você define fazem o seguinte:
spring.jpa.database-platform: Ativa o motor de partida. O motor de partida permanece inativo a menos que você defina esta propriedade paraMongoDB.spring.mongodb.uri: configura a instânciaMongoClientque o inicial reutiliza. O iniciante não cria um cliente próprio.spring.jpa.properties.com.mongodb.hibernate.semantics.nulls: declara a semântica de comparação nula que as queries utilizam. Essa propriedade é obrigatória e seu único valor suportado éMQL.
Defina sua entidade Movie
No diretório src/main/java/org/example do seu projeto, crie um arquivo chamado Movie.java e cole o seguinte código nele:
package org.example; import com.mongodb.hibernate.annotations.ObjectIdGenerator; import org.bson.types.ObjectId; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Table; public class Movie { private ObjectId id; private String title; private int year; public Movie() { } public Movie(String title, int year) { this.title = title; this.year = year; } public ObjectId getId() { return id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } }
Esta entidade representa a coleção sample_mflix.movies a partir dos conjuntos de dados de amostra do Atlas . O iniciador verifica o pacote principal do seu aplicativo em busca de entidades, para que você não precise registrar a entidade.
Defina seu repositório
No mesmo diretório, crie um arquivo chamado MovieRepository.java e cole o seguinte código nele:
package org.example; import org.bson.types.ObjectId; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; public interface MovieRepository extends JpaRepository<Movie, ObjectId> { List<Movie> findByTitle(String title); }
O iniciador habilita repositórios JPA do Spring Data sem um SQL DataSource, portanto o Spring Boot implementa a interface MovieRepository para você.
Defina sua classe de aplicação
No mesmo diretório, crie um arquivo chamado MovieApplication.java e cole o seguinte código nele:
package org.example; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; public class MovieApplication { public static void main(String[] args) { SpringApplication.run(MovieApplication.class, args); } CommandLineRunner run(MovieRepository repository) { return args -> { for (Movie movie : repository.findByTitle("Little Women")) { System.out.println("Title: " + movie.getTitle() + ", Year: " + movie.getYear()); } }; } }
Esta classe executa uma query de repositório na inicialização e imprime cada filme correspondente.
Depois de concluir estas etapas, seu aplicação terá a seguinte estrutura de arquivo:
MongoHibernateSpringQuickstart ├── src │ └── main │ ├── java │ │ └── org/example │ │ ├── Movie.java │ │ ├── MovieApplication.java │ │ └── MovieRepository.java │ └── resources │ └── application.properties ├── .gitignore ├── pom.xml (for Maven projects) └── build.gradle (for Gradle projects)
Execute seu aplicativo
Execute a classe MovieApplication em seu IDE. Seu resultado se assemelha ao seguinte texto:
Title: Little Women, Year: 1949 Title: Little Women, Year: 1994
Se o seu aplicação não iniciar, consulte Solucionar problemas de erros de inicialização para obter possíveis erros de inicialização e dicas de solução de problemas.
Próximos passos
Para saber como definir propriedades JPA, alterar a estratégia de nomenclatura de campo e personalizar o MongoClient, consulte Configurar o iniciador do Spring Boot.
Para saber como modelar seus dados como entidades, consulte Criar entidades para representar coleções.
Para saber como consultar seus dados, consulte a seção Interagir com dados .