sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo utilizar Spring Boot con MongoDB

Spring Boot es un marco de código abierto basado en Java para crear microservicios, que permite a los desarrolladores implementar y desarrollar servicios de forma independiente. Cada servicio en ejecución tiene su proceso, logrando así el modelo liviano que soporta las aplicaciones de negocio. Los microservicios tienen varias ventajas:escalabilidad simple, configuración mínima, menor tiempo de producción, compatibilidad con contenedores y fácil desarrollo.

Spring Boot proporciona una buena plataforma para que los desarrolladores construyan aplicaciones Spring independientes y listas para producción que simplemente puede ejecutar; por lo tanto, uno puede comenzar con configuraciones mínimas sin necesidad de una configuración completa de resortes.

Por ejemplo, manejar la gestión de dependencias es complejo para grandes proyectos; Spring Boot resuelve esta dificultad proporcionando un conjunto de dependencias para la comodidad del desarrollador. La aplicación Spring Boot analiza todos los beans y las declaraciones de paquetes cuando se inicializa la aplicación; Además, la anotación de la aplicación Spring Boot incluye análisis de componentes, configuración automática y configuración de Spring Boot.

Características de Spring Boot

A continuación se presentan algunas de las características estándar de spring-boot:

  1. Configura automáticamente las bibliotecas de Spring y de terceros cuando es posible
  2. Proporciona dependencias "iniciales" obstinadas para simplificar la configuración de su compilación
  3. No tiene requisitos para la configuración XML y No genera código
  4. Además, ofrece funciones listas para producción, como métricas de configuración externalizadas y comprobaciones de estado
  5. Tiene un Tomcat incrustado, Undertow directamente o Jetty; por lo tanto, no hay necesidad de implementar archivos WAR
  6. Además, crea aplicaciones Spring independientes

Ventajas de Spring Boot para los desarrolladores

  1. Aumenta la productividad
  2. Facilita el desarrollo y la comprensión de las aplicaciones Spring
  3. Reduce el tiempo de desarrollo.

 Objetivos de Spring Boot

Está diseñado para:

  1. Desarrolle aplicaciones Spring listas para producción de una manera más sencilla
  2. Evite la configuración XML compleja en Spring
  3. Reduzca el tiempo de desarrollo y ejecute la aplicación de forma independiente
  4. Ofrezca una forma más directa de comenzar con la aplicación.

Spring Boot es más preferido debido a las características y beneficios que ofrece, como:

  1. Provisión de un potente procesamiento por lotes y gestión de puntos finales REST
  2. Provisión de una forma más flexible de configurar transacciones de datos, Java Beans j y configuraciones XML.
  3. Ofrece anotación basada en aplicaciones de primavera
  4. Simplifica la gestión de dependencias, incluye un contenedor de Servlet integrado
  5. No se necesitan configuraciones manuales ya que todo en Spring Boot se configura automáticamente

MongoDB es un programa de base de datos orientado a documentos, multiplataforma y disponible en la fuente. Es una base de datos de documentos que proporciona una alta escalabilidad y flexibilidad de los programas. Además, ofrece a los usuarios consultas e indexación rápidas, lo que a la larga mejora su rendimiento.

MongoDB está clasificado como un programa de base de datos NoSQL y utiliza documentos similares a JSON con esquemas opcionales y flexibles. Esta base de datos fue desarrollada por MongoDB Inc., una empresa estadounidense que desarrolla y brinda soporte comercial para la base de datos de fuente disponible. MongoDB tiene licencia bajo la Licencia pública del lado del servidor (SSPL).

MongoDB ha tenido una mejora continua en sus características debido al desarrollo continuo de versiones, por ejemplo;

FECHA VERSIÓN NOTA DE CARACTERÍSTICAS
diciembre de 2009 1.2 Funciones JavaScript almacenadas
Creación de índices más rápida
Más índices por colección
Tiempo de sincronización configurable
Varias funciones y correcciones menores
agosto de 2010 1.6 Mapear/reducir
Conjuntos de réplicas
fragmentación lista para producción
Soporte para IPv6
marzo de 2013 2.4 Índice hash
Cambiar al motor JavaScript V8
Soporte geoespacial mejorado
Búsqueda de texto mejorada
Mejoras de seguridad
8 de abril de 2014 2.6 Mejoras en el motor de consulta
Mejoras de agregación
Mejoras de seguridad
Nuevo protocolo de operación de escritura
Integración de búsqueda de texto
3 de marzo de 2015 3.0 Funcionalidad de explicación mejorada
API de motor de almacenamiento conectable
Administrador de operaciones de MongoDB
Compatibilidad con el motor de almacenamiento Wired Tiger
Autenticación SCRAM-SHA-1
8 de diciembre de 2015 3.2 Mejoras de elección de replicación
Validaciones de documentos
Motor de almacenamiento Wired Tiger por defecto
Configurar servidores como conjuntos de réplicas
Pasado de V8 a Spider Monkey
Validaciones de documentos
Leer preocupación
29 de noviembre de 2016 3.4 Recopilación, preocupaciones de lectura linealizables y vistas
junio de 2018 4.0 Transacciones mejoradas
13 de julio de 2021 5.0 Cifrado a nivel de campo del lado del cliente
API con versiones a prueba de futuro
Compatibilidad con series temporales
La repartición en vivo implica cambiar las asignaciones de objeto-fragmento y mover el objeto a otro fragmento.

Se pueden crear aplicaciones independientes rápidas y sencillas con la ayuda de Spring Boot (como veremos más adelante). Como resultado de su facilidad de uso, MongoDB se ha convertido en la base de datos NoSQL más popular. Se puede crear un desarrollo rápido, seguro, confiable y que requiera un tiempo de desarrollo mínimo al combinar Spring Boot y MongoDB.

Este artículo muestra cómo utilizar Spring Data MongoDB API para combinar Spring Boot con MongoDB.

Cómo usar Spring Boot con MongoDB

Spring Boot es un marco web basado en microservicios que se configura automáticamente y puede proporcionar funciones integradas de seguridad y acceso a la base de datos. Por lo tanto, Spring Boot puede crear rápidamente una aplicación independiente sin cambios de configuración. Por otro lado, MongoDB es la base de datos NoSQL más popular, ya que puede almacenar y recuperar datos fácilmente. La combinación de Spring Boot y MongoDB da como resultado aplicaciones seguras, rápidas y confiables que requieren un tiempo de desarrollo mínimo.

Spring Boot crea aplicaciones rápidas listas para producción. MongoDB y Spring Boot interactúan mediante la clase de plantilla de Mongo y la interfaz del repositorio de Mongo.

  • Plantilla Mongo — implementa un conjunto de API listas para usar. Una buena opción para operaciones como agregaciones de actualizaciones, entre otras; además, Mongo Template ofrece un control más refinado sobre las consultas personalizadas.
  • Repositorio de Mongo se usa para consultas básicas que involucran muchos campos de documentos, como la visualización de documentos y la creación de datos.

La configuración de Spring Boot MongoDB con ambos enfoques solo necesita unas pocas líneas de código.

Spring Boot es un marco de aplicación para aplicaciones web Java basado en el marco MVC (Model-View-Controller). Su inyección de dependencia maneja funciones como la seguridad, el acceso y la inicialización de la base de datos, lo que permite a los desarrolladores centrarse en la lógica empresarial. Además, está construido sobre el marco Spring, principalmente para las API REST y requiere muy pocas configuraciones. Tiene cuatro capas:

La capa de presentación — La parte de vista del marco MVC maneja el front-end.

La capa empresarial es el controlador donde se realizan todas las validaciones y la lógica empresarial.

Capa de persistencia — Esta capa traduce los objetos comerciales a objetos de base de datos.

Capa de base de datos — Las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) reales.

MongoDB es una base de datos rápida capaz de manejar cantidades masivas de datos organizados y no estructurados, lo que la hace ideal para aplicaciones web. MongoDB almacena datos como objetos JSON binarios, lo que simplifica la recuperación de datos. Spring Framework incluye conectores robustos que permiten operaciones de base de datos eficientes con MongoDB.

Solo nos interesan las capas de Persistencia y Base de datos en este tutorial de ejemplo de Spring Boot con MongoDB. Ejecutaremos nuestro software a través de un entorno de desarrollo integrado (IDE) para mantener un fuerte énfasis en las operaciones CRUD. Para conectar Spring Boot y MongoDB, agregaremos configuraciones de Spring Boot MongoDB.

Lo que construiremos en este ejemplo

Desarrollemos una lista de compras de comestibles de un usuario ficticio. Realizaremos los siguientes procedimientos:

  1. Definimos un artículo de comestibles Plain Old Java Object (POJO) con una identificación, un nombre, una cantidad y una categoría en nuestra aplicación Spring.
  2. Después de eso, llevamos a cabo acciones de creación, lectura, actualización y eliminación (CRUD) a través de la interfaz pública de MongoRepository.
  3. Finalmente, demostramos un método diferente para modificar documentos utilizando la clase MongoTemplate.

Requisitos

Requerimos:

  • Cluster MongoDB Atlas (si aún no tiene una cuenta, regístrese gratis antes de pasar a la siguiente fase).
  • Primavera de inicialización
  • Java 1.8
  • Maven (instale Maven yendo a "Ayuda -> luego Instalar nuevo software" en Eclipse).
  • Un entorno de desarrollo integrado (IDE) importará las bibliotecas y dependencias esenciales. El Eclipse se utilizará para la ilustración de este proyecto.

Para comenzar, cree un proyecto Spring Boot con la siguiente configuración usando Spring Initializr:

Elija Maven Project con Java (8) como lenguaje de programación y Spring Boot 2.5.3 como versión. Además, agregue las dependencias Spring Web y Spring Data MongoDB. Spring Web integra el servidor Apache Tomcat, Spring MVC y REST en su aplicación para centralizar la administración de todas las dependencias comunes.

Aprovechamos la dependencia de Spring Data MongoDB para acceder a los datos de nuestro clúster MongoDB Atlas en esta aplicación.

Ingrese los metadatos para el proyecto (como se ilustra arriba) y elija la opción JAR. Spring Initializr administra la creación del archivo pom.xml mientras que Maven descarga las dependencias requeridas a través de pom.xml.

Esto completa nuestros preparativos para los escenarios. A continuación, podemos hacer clic en el botón Generar para generar todos los archivos necesarios para iniciar el proyecto Spring Boot. Después de eso, el navegador comenzará a descargar un archivo ZIP automáticamente.

Después de descargar el archivo ZIP, descomprima el proyecto. Desde el IDE, abra el proyecto. Puede ver un ejemplo de una estructura de proyecto similar a esta:

Como podemos ver, las dependencias que agregamos están incluidas en el archivo pom.xml como artefactoId:

Es hora de llenar el subdirectorio src/main/java con contenido.

Implementación del Modelo MongoDB

La clase POJO o GroceryItem sirve como nuestro modelo aquí.

Cree un paquete llamado "com.example.mdbspringboot.model" e incluya la clase GroceryItem.java dentro de él.

La anotación @Document se usa para especificar el nombre de la colección que utilizará el modelo. MongoDB creará la colección si aún no existe.

Podemos generar getters y setters para este código usando la opción Eclipse Source -> Generate Getters and Setters. Primero, utilice la anotación @Id para especificar la clave principal _id del documento MongoDB. MongoDB producirá automáticamente un campo _id cuando se cree el documento si no especificamos nada.

Implementación de la API de MongoDB en Spring Boot

El repositorio es donde se implementa la API. Sirve como puente entre la base de datos y el modelo, proporcionando acceso a todas las actividades CRUD.

Cree un paquete llamado "com.example.mdbspringboot.repository" para contener todos los archivos del repositorio.

Creamos una interfaz pública para ItemRepository que amplía la interfaz de MongoRepository.

El primer enfoque, findItemByName, requiere un argumento de consulta, que especifica el campo en el que se debe filtrar la consulta. Esto se especifica mediante la anotación @Query. La segunda técnica aprovecha el campo de categoría para recuperar todos los objetos que pertenecen a una categoría específica. Solo queremos el nombre y el número del campo proyectado en la respuesta de la consulta; por lo tanto, establecemos esos campos en 1. Volvemos a aplicar el método count() en su estado actual.

Ejemplos de MongoDB con Spring Boot CRUD

Ahora estamos listos para desarrollar nuestra aplicación Spring y probar los métodos.

Para vincular a MongoDB Atlas, definimos la cadena de conexión en el archivo application.properties de la carpeta src/main/resources. Se puede acceder a la cadena de conexión del clúster en la interfaz de usuario de Atlas. No se requiere ningún otro archivo para incluir código relacionado con la conexión. Spring Boot administra la conexión de la base de datos en nuestro nombre.

Además, aquí especificamos el nombre de la base de datos:MongoDB creará uno si no existe.

No estamos usando el controlador o la vista en esta muestra de Spring Boot MongoDB. En su lugar, para ver el resultado en la consola, utilizaremos CommandLineRunner.

Cree la clase principal MdbSpringBootApplication.java en el paquete raíz com.example.mdbspringboot:

Para ejecutar la aplicación Spring, nuestra clase MdbSpringBootApplication usa la interfaz CommandLineRunner. ItemRepository es Autowired, lo que significa que Spring lo descubrirá automáticamente. La anotación @SpringBootApplication se usa para inicializar el contexto de la aplicación. Además, habilitamos Mongo Repositories con @EnableMongoRepositories. La estructura de nuestro proyecto ahora debería parecerse a lo siguiente:

Ahora, agreguemos las operaciones del repositorio a la clase principal, que se usará para las operaciones CRUD:

Cree una operación Spring Boot de MongoDB

Usaremos la función de guardar para crear nuevos documentos. Podemos acceder al método save a través de la clase SimpleMongoRepository, que utiliza el protocolo MongoRepository. Nuestra interfaz ItemRepository amplía la interfaz ItemRepository de MongoRepository.

El método save aceptará un parámetro del tipo GroceryItem. Esta sección creará cinco elementos de abarrotes (documentos) y luego usará la función de guardar para almacenarlos en MongoDB.

Operaciones de lectura Spring Boot MongoDB

Estamos realizando cuatro operaciones de lectura distintas en esta aplicación:

Utilice la función findAll() para recuperar todos los documentos (artículos de supermercado).

La función findItemByName devuelve un único elemento (documento) en función de su campo de nombre.

Recupera una lista de objetos organizados por categoría.

Calcula el número total de objetos.

Podemos diseñar una función auxiliar para formatear el resultado de las operaciones de lectura:

Operación de actualización de MongoDB Spring Boot

Supongamos que cambiamos de opinión y preferimos el término "munchies" a "snacks" en nuestra lista de compras. Tendríamos que actualizar cualquier documento que contenga la categoría "bocadillos". Para lograr esto, primero debemos recuperar todos los documentos que pertenecen a la categoría "snacks", cambiar la categoría a "munchies" y luego guardar todos los documentos.

Operación de eliminación de Spring Boot de MongoDB

En lugar de modificar una categoría o un artículo, es posible que deseemos eliminar un artículo de comestibles de nuestra lista. Usando la función deleteById predefinida, podemos eliminar el artículo de comestibles con una identificación específica.

Podríamos usar groceryItemRepo.deleteAll(); función para eliminar todos los elementos. Eliminar todos los documentos de la colección no los eliminará.

Montando las operaciones CRUD

A continuación, implementaremos CommandLineRunner. Para invocar los métodos anteriores, utilice el método run():

Las sentencias system.out se utilizan para mejorar la apariencia de la salida.

Cuando se ejecuta el software, se espera el siguiente resultado:

Función de actualización de MongoDB Spring Boot junto con MongoTemplate

Además, podemos utilizar la clase MongoTemplate para realizar acciones de actualización en un campo específico. Incluye la funcionalidad predeterminada del paquete org.springframework.data.mongodb.core.query. No tenemos que escribir una gran cantidad de código y la actualización se puede lograr con una sola consulta a la base de datos. MongoTemplate también se puede utilizar para procesos más complicados, como agregaciones (fuera del alcance de esta guía).

Se debe crear un repositorio personalizado antes de usar una clase llamada MongoTemplate. Aquí es donde se creará la consulta para la actualización.

Permítanme demostrar cómo construir un método que actualice la cantidad de un artículo de supermercado.

Construya una interfaz CustomItemRepository:

Podemos ampliar la interfaz con tantos métodos como sea necesario y proporcionar ejemplos en la clase CustomItemRepositoryImpl:

Spring importará las dependencias de los objetos porque MongoTemplate es @Autowired. Además, la anotación @Component permite que Spring descubra la interfaz CustomItemRepository.

El siguiente paso es invocar esta función desde dentro de nuestra clase principal. Al igual que con el GrooveItemRepo, debemos definir nuestro CustomRepo de la siguiente manera:

Luego, en la clase principal, crea el siguiente método que invoca nuestra función customRepo:

Agregue el siguiente método al método de ejecución para que se invoque cuando se ejecute el programa:

Deberías obtener el siguiente resultado:

Como se dijo anteriormente, pudimos realizar la modificación en una sola transacción de base de datos en lugar de MongoRepository, que requería tres acciones:buscar, configurar y guardar. MongoTemplate también incluye el método updateMulti(), que le permite actualizar varios documentos simultáneamente.

Conclusión

Demostramos en este artículo lo simple que es integrar MongoDB con Spring Boot. No se requiere ningún otro código para conectarse a MongoDB Atlas. MongoDB Atlas proporciona una interfaz fácil de usar para almacenar y acceder a datos desde cualquier ubicación. Si completó este sencillo tutorial, creemos que ahora comprende cómo usar Spring Boot con MongoDB. Si encuentra alguna dificultad, comuníquese a través de la sección de comentarios para obtener ayuda. Gracias por leer.