Visão geral
Neste tutorial, você pode aprender como criar um aplicativo Spring Boot que armazena entidades da Java Persistence API (JPA) no MongoDB usando a extensão Hibernate ORM. O aplicativo 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 implantação do MongoDB e Criar uma string de conexão do tutorial Introdução à extensão Hibernate ORM. Essas etapas criam a implantação do Atlas, os dados de amostra e a string de conexão que este tutorial usa.
Instalar o iniciador do aplicativo
Crie um projeto Spring Boot
Crie um projeto Spring Boot 4.x chamado MongoHibernateSpringQuickstart. Você pode gerar o projeto usando o Spring Initializr ou criá-lo em sua IDE.
O Spring Initializr gera uma classe de aplicativo 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 de aplicativo principal gerado automaticamente. Você criará um arquivo de aplicativo principal para este projeto chamado Movie Application mais adiante neste tutorial. Se o seu projeto contiver duas classes de aplicativo principais, o aplicativo não será iniciado 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 Hibernate ORM
O starter requer o Hibernate ORM 7.4 ou posterior. O Spring Boot é gerenciado pela versão do Hibernate ORM por meio de sua lista de materiais (BOM), e algumas versões do Spring Boot 4.x gerenciam uma versão anterior do Hibernate ORM do que a versão que o starter requer. Se a versão gerenciada for anterior à 7.4, seu aplicativo não iniciará e a extensão Hibernate ORM lançará uma 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 sobrepor 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 faça a sincronização de seu projeto para concluir a instalação.
Configurar seu aplicativo
Defina as propriedades do seu aplicativo
No diretório src/main/resources do seu projeto, abra o arquivo application.properties e adicione as seguintes propriedades:
spring.jpa.database-platform=MongoDBspring.mongodb.uri=<connection string>spring.jpa.properties.com.mongodb.hibernate.semantics.nulls=MQLSubstitua o placeholder <connection string> pela string de conexão sample_mflix que você criou na etapa Criar uma string de conexão do tutorial Introdução à extensão Hibernate ORM. Sua string de conexão deve ser semelhante ao seguinte exemplo:
mongodb+srv://<db_username>:<db_password>@<cluster>/sample_mflix?<options>As propriedades do aplicativo que você define fazem o seguinte:
spring.jpa.database-platform: Ativa o starter. O starter permanece inativo, a menos que você defina esta propriedade comoMongoDB.spring.mongodb.uri: Configura a instânciaMongoClientque o starter reutiliza. O starter não cria seu próprio cliente.spring.jpa.properties.com.mongodb.hibernate.semantics.nulls: Declara a semântica de comparação de nulos que as query usam. Esta 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;
@Entity@Table(name = "movies")public class Movie { @Id @ObjectIdGenerator 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 dos conjuntos de dados de amostra do Atlas. O starter verifica o pacote principal do seu aplicativo em busca de entidades, portanto, você não precisa 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 starter habilita repositórios Spring Data JPA sem um DataSource SQL, então o Spring Boot implementa a interface MovieRepository para você.
Defina sua classe de aplicativo
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;
@SpringBootApplicationpublic class MovieApplication {
public static void main(String[] args) { SpringApplication.run(MovieApplication.class, args); }
@Bean 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.
Após concluir estas etapas, seu aplicativo terá a seguinte estrutura de arquivos:
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 no seu IDE. Sua saída se assemelha ao seguinte texto:
Title: Little Women, Year: 1949Title: Little Women, Year: 1994Se o seu aplicativo não iniciar, consulte Solução de 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 aprender como definir propriedades JPA, alterar a estratégia de nomenclatura de campo e personalizar o MongoClient, consulte Configurar o Spring Boot Starter.
Para aprender como modelar seus dados como entidades, consulte Criar entidades para representar coleções.
Para aprender a fazer query dos seus dados, consulte a seção Interação com Dados.