Visão geral
Neste guia, você pode aprender como configurar o iniciador do Spring Boot que a Extensão MongoDB para Hibernar ORM fornece. Para saber como instalar o iniciador e criar um aplicação que o utilize, consulte Introdução ao Spring Boot Starter.
Ative o Starter
Para ativar o iniciador, 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 iniciador usa essa 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 iniciador permanece inativo. Um iniciador inativo não afeta seu aplicação.
Configurar a conexão
O inicial reutiliza a instância MongoClient que o Spring Boot cria a partir das propriedades spring.mongodb.*. O iniciador não cria um cliente próprio e não gerencia o ciclo de vida do cliente, portanto, seu aplicação usa um pool de conexões para persistência da Java Persistence API (JPA), verificações de integridade, métricas e qualquer outro componente que use o cliente.
O inicial utiliza o nome do banco de dados configurado na propriedadespring.mongodb.database. Se você não configurar esta propriedade, o iniciador utilizará o nome do banco de dados na string de conexão que você configurou na propriedadespring.mongodb.uri .
Para personalizar este cliente, declare um bean MongoClientSettingsBuilderCustomizer. Essa interface personaliza a instância MongoClientSettings.Builder antes que o Spring Boot crie o cliente.
Definir propriedades JPA
O iniciante usa as propriedades padrão do spring.jpa.*. A tabela a seguir descreve as propriedades comumente usadas:
Propriedade | Descrição |
|---|---|
| Especifica a ação de gerenciamento de esquema que o Hibername ORM executa na inicialização. O valor padrão para unidades de persistência apoiadas MongoDB é |
| Especifica se o Hibername ORM registra as declarações que ele gera. |
| Passa as propriedades de configuração do Hibernado ORM diretamente para o Hibernado ORM. |
| Especifica se o contexto de persistência permanece aberto durante uma solicitação da web. Essa propriedade é habilitada por padrão em aplicativos da web de servlet. |
| Especifica se o iniciador habilita a verificação do repositório JPA do Spring Data. Esta propriedade está habilitada por padrão. |
Você também pode declarar os feijões HibernamePropertiesCustomizer e EntityManagerFactoryBuilderCustomizer para modificar a configuração que o iniciador cria. A interface HibernatePropertiesCustomizer personaliza as propriedades ORM do Hibername que o iniciador passa para o EntityManagerFactory, e a interface EntityManagerFactoryBuilderCustomizer personaliza o construtor que a cria.
Verificar Entidades e Repositórios
O iniciador verifica entidades nos pacotes que você registra usando a anotação @EntityScan. Se você não registrar nenhum pacote, o iniciador verificará o pacote de sua classe @SpringBootApplication e seus subpacotes.
Declare a anotação @EntityScan na sua classe principal do aplicação , conforme mostrado no exemplo a seguir:
public class MovieApplication { // ... }
O iniciador habilita repositórios Spring Data JPA no mesmo escopo do pacote . Se você mesmo declarar a anotação @EnableJpaRepositories, sua declaração terá precedência sobre a do iniciante.
O inicial habilita esses repositórios sem um SQL DataSource e não traz nenhum pool de conexões SQL. Portanto, um aplicação somente do MongoDB não requer nenhuma propriedadespring.datasource.url e o Spring Boot não usa sua classeDataSourceAutoConfiguration.
Configurar nomenclatura do campo
Ao contrário de um aplicação SQL Spring Boot , que mapeia as propriedades da entidade para os 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 por meio do iniciador persiste da mesma forma que uma entidade que você inicializa diretamente por meio do Hibername 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
Migre documentos antes de alterar a estratégia de nomenclatura
A alteração da estratégia de nomenclatura afeta apenas os documentos que seu aplicação 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.
Solucionar erros de inicialização
Quando o iniciador 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 |
|---|---|
Nenhum | Adicione a dependência |
Nenhum nome de banco de dados disponível. | Adicione o nome do banco de dados à string de conexão na propriedade |
Use um cliente dedicado
Para se conectar por meio de um cliente que somente o iniciante usa, como um cliente com credenciais diferentes, declare um bean MongoConfigurationContributor que define o cliente e o nome do banco de dados . Quando você declara esse bean, o iniciador usa seu cliente em vez do cliente gerenciado pela Spring.
Se você declarar mais de um bean MongoConfigurationContributor, o iniciador os aplicará na ordem em que você especificar usando a anotação @Order e o último bean que definir um valor determinará esse valor.
Limitações
O iniciador tem as seguintes limitações:
A anotação
@DataJpaTestnão é suportada. Para testar com relação ao MongoDB, use a anotação@SpringBootTest, que carrega o contexto completo do aplicação .O iniciador configura uma unidade de persistência única. Para usar mais de uma unidade de persistência, configure você mesmo as unidades adicionais.