Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

Configure o Spring Boot Starter

Neste guia, você pode aprender como configurar o starter do Spring Boot que a Extensão do MongoDB para Hibernate ORM fornece. Para aprender como instalar o starter e criar um aplicativo que o utilize, consulte Introdução ao Spring Boot Starter.

Para ativar o starter, defina a propriedade spring.jpa.database-platform como MongoDB no arquivo application.properties do seu aplicativo, conforme mostrado no exemplo a seguir:

spring.jpa.database-platform=MongoDB

O starter usa esta propriedade padrão do Spring Boot e não requer nenhuma configuração dedicada própria. Quando a propriedade tem qualquer outro valor ou não está definida, o starter permanece inativo. Um starter inativo não afeta seu aplicativo.

O starter reutiliza a instância MongoClient que o Spring Boot cria a partir das propriedades spring.mongodb.*. O starter não cria seu próprio cliente e não gerencia o ciclo de vida do cliente, portanto, seu aplicativo usa um pool de conexões para persistência da Java Persistence API (JPA), verificação de integridade, métricas e qualquer outro componente que use o cliente.

O starter usa o nome do banco de dados definido na propriedade spring.mongodb.database. Se você não definir essa propriedade, o starter usará o nome do banco de dados na string de conexão que você definiu na propriedade spring.mongodb.uri.

Para personalizar este cliente, declare um bean MongoClientSettingsBuilderCustomizer. Esta interface personaliza a instância MongoClientSettings.Builder antes que o Spring Boot crie o cliente.

O starter usa as propriedades padrão spring.jpa.*. A tabela a seguir descreve as propriedades comumente usadas:

Propriedade
Descrição

spring.jpa.hibernate.ddl-auto

Especifica a ação de gerenciamento de esquema que o Hibernate ORM executa na inicialização. O valor padrão para unidades de persistência baseadas em MongoDB é none.

spring.jpa.show-sql

Especifica se o Hibernate ORM faz log das declarações que ele gera.

spring.jpa.properties.*

Passa as propriedades de configuração do Hibernate ORM diretamente para o Hibernate ORM.

spring.jpa.open-in-view

Especifica se o contexto de persistência permanece aberto durante uma solicitação da web. Esta propriedade está ativada por padrão em aplicativos web servlet.

spring.data.jpa.repositories.enabled

Especifica se o starter habilita a verificação de repositório do Spring Data JPA. Esta propriedade está habilitada por padrão.

Você também pode declarar beans HibernatePropertiesCustomizer e EntityManagerFactoryBuilderCustomizer para modificar a configuração que o starter cria. A interface HibernatePropertiesCustomizer personaliza as propriedades do Hibernate ORM que o starter passa para o EntityManagerFactory, e a interface EntityManagerFactoryBuilderCustomizer personaliza o construtor que o cria.

O starter verifica entidades nos pacotes que você registra usando a anotação @EntityScan. Se você não registrar nenhum pacote, o starter fará a varredura do pacote da sua classe @SpringBootApplication e de seus subpacotes.

Declare a anotação @EntityScan na sua classe principal do aplicativo, conforme mostrado no exemplo a seguir:

@SpringBootApplication@EntityScan("org.example.model") public class MovieApplication { // ...}

O starter habilita repositórios do Spring Data JPA no mesmo escopo de pacote. Se você declarar a anotação @EnableJpaRepositories por conta própria, sua declaração terá precedência sobre a do starter.

O iniciador habilita esses repositórios sem um SQL DataSource e não traz nenhum pool de conexões SQL. Um aplicativo somente MongoDB, portanto, não requer nenhuma propriedade spring.datasource.url, e o Spring Boot não usa sua classe DataSourceAutoConfiguration.

Ao contrário de um aplicativo SQL Spring Boot, que mapeia as propriedades da entidade para nomes de coluna snake_case por padrão, o iniciador mapeia cada propriedade da entidade para um campo de documento com o mesmo nome. Uma entidade que você inicializa através do starter persiste da mesma forma que uma entidade que você inicializa diretamente através do Hibernate ORM.

Para usar uma estratégia de nomenclatura diferente, defina a estratégia explicitamente no arquivo application.properties do seu aplicativo, conforme mostrado no exemplo a seguir:

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategySnakeCaseImpl

Aviso

Migrar documento antes de alterar a estratégia de nomenclatura

A alteração da estratégia de nomenclatura afeta apenas os documentos que seu aplicativo grava após a alteração da estratégia. O MongoDB não migra documentos existentes, portanto, uma coleção pode conter documentos que usam vários tipos de nomes de campo. Migre seus documentos existentes antes de alterar a estratégia de nomenclatura.

Quando o starter está ativo, mas não consegue configurar uma unidade de persistência, ele relata o erro na inicialização. A tabela a seguir descreve esses erros:

Erro
de conflitos

Não há MongoClient disponível para o starter usar.

Adicione a dependência spring-boot-mongodb e defina as propriedades spring.mongodb.*, ou declare um bean MongoClient em seu aplicativo.

Nenhum nome de banco de dados está disponível.

Adicione o nome do banco de dados à string de conexão na propriedade spring.mongodb.uri, defina a propriedade spring.mongodb.database ou defina o nome usando um bean MongoConfigurationContributor.

Para se conectar por meio de um cliente que apenas o starter usa, como um cliente com credenciais diferentes, declare um bean MongoConfigurationContributor que define o cliente e o nome do banco de dados. Ao declarar esse bean, o starter usa seu cliente em vez do cliente gerenciado pelo Spring.

Se você declarar mais de um bean MongoConfigurationContributor, o starter os aplica na ordem especificada usando a anotação @Order, e o último bean que define um valor determina esse valor.

O starter tem as seguintes limitações:

  • A anotação @DataJpaTest não é suportada. Para testar com o MongoDB, use a anotação @SpringBootTest, que carrega todo o contexto do seu aplicativo.

  • O starter configura uma única unidade de persistência. Para usar mais de uma unidade de persistência, configure as unidades adicionais você mesmo.