Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Configurar el Spring Boot Starter

En esta guía, aprenderá a configurar el iniciador de Spring Boot que proporciona la extensión MongoDB para Hibernate ORM. Para aprender a instalar el iniciador y crear una aplicación que lo utilice, consulte la guía "Primeros pasos con el iniciador de Spring Boot".

Para activar el iniciador, establezca la propiedad spring.jpa.database-platform en MongoDB en el archivo application.properties de su aplicación, como se muestra en el siguiente ejemplo:

spring.jpa.database-platform=MongoDB

El iniciador utiliza esta propiedad estándar de Spring Boot y no requiere ninguna configuración específica. Si la propiedad tiene otro valor o no está definida, el iniciador permanece inactivo. Un iniciador inactivo no afecta a la aplicación.

El iniciador reutiliza la instancia MongoClient que Spring Boot crea a partir de las propiedades spring.mongodb.*. El iniciador no crea un cliente propio ni gestiona su ciclo de vida, por lo que su aplicación utiliza un único grupo de conexiones para la persistencia de la API de persistencia de Java (JPA), las comprobaciones de estado, las métricas y cualquier otro componente que utilice el cliente.

El iniciador utiliza el nombre de la base de datos configurado en la propiedad spring.mongodb.database. Si no se configura dicha propiedad, el iniciador utiliza el nombre de la base de datos que se encuentra en la cadena de conexión configurada en la propiedad spring.mongodb.uri.

Para personalizar este cliente, declare un bean MongoClientSettingsBuilderCustomizer. Esta interfaz personaliza la instancia MongoClientSettings.Builder antes de que Spring Boot cree el cliente.

El iniciador utiliza las propiedades estándar spring.jpa.*. La siguiente tabla describe las propiedades de uso común:

Propiedad
Descripción

spring.jpa.hibernate.ddl-auto

Especifica la acción de gestión de esquema que Hibernate ORM realiza al iniciarse. El valor predeterminado para las unidades de persistencia respaldadas por MongoDB es none.

spring.jpa.show-sql

Especifica si Hibernate ORM registra las sentencias que genera.

spring.jpa.properties.*

Pasa las propiedades de configuración de Hibernate ORM directamente a Hibernate ORM.

spring.jpa.open-in-view

Especifica si el contexto de persistencia permanece abierto durante la duración de una solicitud web. Esta propiedad está habilitada de forma predeterminada en las aplicaciones web de servlets.

spring.data.jpa.repositories.enabled

Especifica si el iniciador habilita el escaneo del repositorio de Spring Data JPA. Esta propiedad está habilitada por defecto.

También puede declarar beans HibernatePropertiesCustomizer y EntityManagerFactoryBuilderCustomizer para modificar la configuración que crea el iniciador. La interfaz HibernatePropertiesCustomizer personaliza las propiedades del ORM de Hibernate que el iniciador pasa a EntityManagerFactory, y la interfaz EntityManagerFactoryBuilderCustomizer personaliza el constructor que las crea.

El iniciador busca entidades en los paquetes que registres mediante la anotación @EntityScan. Si no registras ningún paquete, el iniciador escanea el paquete de tu clase @SpringBootApplication y sus subpaquetes.

Declara la anotación @EntityScan en la clase principal de tu aplicación, como se muestra en el siguiente ejemplo:

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

El starter habilita los repositorios de Spring Data JPA dentro del mismo ámbito de paquete. Si declara usted mismo la anotación @EnableJpaRepositories, su declaración tendrá prioridad sobre la del starter.

El iniciador habilita estos repositorios sin una DataSource SQL y no proporciona un pool de conexiones SQL. Por lo tanto, una aplicación que solo utiliza MongoDB no requiere la propiedad spring.datasource.url, y Spring Boot no utiliza su clase DataSourceAutoConfiguration.

A diferencia de una aplicación SQL Spring Boot, que asigna las propiedades de la entidad a los nombres de columna snake_case por defecto, el starter asigna cada propiedad de la entidad a un campo del documento con el mismo nombre. Una entidad que se inicializa mediante el starter persiste de la misma manera que una entidad que se inicializa directamente mediante Hibernate ORM.

Para utilizar una estrategia de nomenclatura diferente, configure la estrategia explícitamente en el archivo application.properties de su aplicación, como se muestra en el siguiente ejemplo:

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

Advertencia

Migrar los documentos antes de cambiar la estrategia de nomenclatura.

Cambiar la estrategia de nomenclatura solo afecta a los documentos que tu aplicación escriba después del cambio. MongoDB no migra los documentos existentes, por lo que una colección puede contener documentos que utilicen varios tipos de nombres de campo. Migra tus documentos existentes antes de cambiar la estrategia de nomenclatura.

Cuando el iniciador está activo pero no puede configurar una unidad de persistencia, informa del error al arrancar. La siguiente tabla describe estos errores:

Error
Resolución

No hay MongoClient disponible para que el iniciador lo utilice.

Agregue la dependencia spring-boot-mongodb y configure las propiedades spring.mongodb.*, o declare un bean MongoClient en su aplicación.

No hay nombre de base de datos disponible.

Agregue el nombre de la base de datos a la cadena de conexión en la propiedad spring.mongodb.uri, configure la propiedad spring.mongodb.database o configure el nombre utilizando un bean MongoConfigurationContributor.

Para conectarse mediante un cliente que solo utiliza el iniciador, como un cliente con credenciales diferentes, declare un bean MongoConfigurationContributor que configure el cliente y el nombre de la base de datos. Al declarar este bean, el iniciador utilizará su cliente en lugar del cliente gestionado por Spring.

Si declara más de un bean MongoConfigurationContributor, el iniciador los aplica en el orden que especifique mediante la anotación @Order, y el último bean que establece un valor determina ese valor.

El motor de arranque tiene las siguientes limitaciones:

  • La anotación @DataJpaTest no es compatible. Para realizar pruebas con MongoDB, utilice la anotación @SpringBootTest, que carga el contexto completo de la aplicación.

  • El programa de inicio configura una única unidad de persistencia. Para usar más de una unidad de persistencia, configure las unidades adicionales manualmente.