MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment utiliser Spring Boot avec MongoDB

Spring Boot est un framework open source basé sur Java pour la création de microservices, qui permet aux développeurs de déployer et de développer des services de manière indépendante. Chaque service en cours d'exécution a son processus, réalisant ainsi le modèle léger qui prend en charge les applications métier. Les microservices présentent plusieurs avantages :évolutivité simple, configuration minimale, temps de production réduit, compatibilité avec les conteneurs et développement facile.

Spring Boot fournit une bonne plate-forme aux développeurs pour créer des applications Spring autonomes et prêtes pour la production que vous pouvez simplement exécuter. ainsi, on peut commencer avec des configurations minimales sans avoir besoin d'une configuration complète de ressort.

Par exemple, gérer la gestion des dépendances est complexe pour les grands projets; Spring Boot résout donc cette difficulté en fournissant un ensemble de dépendances pour la commodité du développeur. L'application Spring Boot analyse tous les beans et déclarations de package lors de l'initialisation de l'application. En outre, l'annotation de l'application Spring Boot inclut l'analyse des composants, la configuration automatique et la configuration Spring Boot.

Caractéristiques de Spring Boot

Voici quelques-unes des fonctionnalités standard de spring-boot :

  1. Il configure automatiquement les bibliothèques Spring et tierces lorsque cela est possible
  2. Il fournit des dépendances "de départ" avisées pour simplifier la configuration de votre build
  3. Il n'a aucune exigence de configuration XML et aucune génération de code
  4. De plus, il offre des fonctionnalités prêtes pour la production telles que des métriques de configuration externalisées et des vérifications de l'état
  5. Il a un Tomcat intégré, Undertow directement ou Jetty ; ainsi, il n'est pas nécessaire de déployer des fichiers WAR
  6. En outre, il crée des applications Spring autonomes

Avantages de Spring Boot pour les développeurs

  1. Cela augmente la productivité
  2. Cela facilite le développement et la compréhension des applications Spring
  3. Cela réduit le temps de développement.

 Objectifs de la botte de printemps

Il est conçu pour :

  1. Développez plus simplement des applications Spring prêtes pour la production
  2. Évitez la configuration XML complexe dans le printemps
  3. Réduire le temps de développement et exécuter l'application indépendamment
  4. Offrez un moyen plus simple de démarrer avec l'application.

Le Spring Boot est plus préféré en raison des fonctionnalités et des avantages qu'il offre comme :

  1. Fourniture d'un puissant traitement par lots et gestion des points de terminaison REST
  2. Fourniture d'un moyen plus flexible de configurer les transactions de données, les Java Beans j et les configurations XML.
  3. Offre des annotations basées sur les candidatures printanières
  4. Simplifie la gestion des dépendances, il inclut un conteneur de servlet intégré
  5. Aucune configuration manuelle n'est nécessaire puisque tout dans Spring Boot est configuré automatiquement

MongoDB est un programme de base de données disponible en source, multiplateforme et orienté document. Il s'agit d'une base de données de documents qui offre une évolutivité et une flexibilité élevées des programmes. En outre, il offre aux utilisateurs une interrogation et une indexation rapides, ce qui, à long terme, améliore ses performances.

MongoDB est classé comme un programme de base de données NoSQL et utilise des documents de type JSON avec des schémas facultatifs et flexibles. Cette base de données a été développée par MongoDB Inc., une société basée aux États-Unis qui développe et fournit un support commercial pour la base de données disponible à la source. MongoDB est sous licence publique côté serveur (SSPL).

MongoDB a eu une amélioration continue de ses fonctionnalités grâce au développement de versions en cours par exemple ;

DATE VERSION NOTE SUR LES FONCTIONNALITÉS
Décembre 2009 1.2 Fonctions JavaScript stockées
Création d'index plus rapide
Plus d'index par collection
Temps de synchronisation configurable
Plusieurs fonctionnalités et correctifs mineurs
Août 2010 1.6 Mapper/réduire
Ensembles de répliques
Sharding prêt pour la production
Prise en charge d'IPv6
Mars 2013 2.4 Index haché
Passer au moteur JavaScript V8
Support géospatial amélioré
Recherche de texte améliorée
Améliorations de sécurité
8 avril 2014 2.6 Améliorations du moteur de requête
Améliorations de l'agrégation
Améliorations de sécurité
Nouveau protocole d'opération d'écriture
Intégration de la recherche textuelle
3 mars 2015 3.0 Fonctionnalité d'explication améliorée
API du moteur de stockage enfichable
Gestionnaire des opérations MongoDB
Prise en charge du moteur de stockage Wired Tiger
Authentification SCRAM-SHA-1
8 décembre 2015 3.2 Améliorations du choix de réplication
Validation des documents
Moteur de stockage Wired Tiger par défaut
Configurer les serveurs en tant que jeux de répliques
Déplacé de V8 vers Spider Monkey
Validation des documents
Lire la préoccupation
29 novembre 2016 3.4 Collation, Problèmes de lecture et vues linéarisables
juin 2018 4.0 Transactions améliorées
13 juillet 2021 5.0 Chiffrement au niveau du champ côté client
API versionnée évolutive
Prise en charge des séries chronologiques
Le repartitionnement en direct implique la modification des mappages objet-fragment et le déplacement de l'objet vers un autre fragment.

Des applications autonomes rapides et faciles peuvent être créées à l'aide de Spring Boot (comme nous le verrons plus tard). En raison de sa facilité d'utilisation, MongoDB est devenue la base de données NoSQL la plus populaire. Rapide, sûr, fiable et nécessitant un temps de développement minimal peut être créé en combinant Spring Boot et MongoDB.

Cet article montre comment utiliser l'API Spring Data MongoDB pour combiner Spring Boot avec MongoDB.

Comment utiliser Spring Boot avec MongoDB

Spring Boot est une infrastructure Web basée sur des microservices qui est configurée automatiquement et peut fournir des fonctionnalités intégrées de sécurité et d'accès à la base de données. Ainsi, le démarrage Spring peut créer rapidement une application autonome sans modification de configuration. D'autre part, MongoDB est la base de données NoSQL la plus populaire car elle peut facilement stocker et récupérer des données. La combinaison de Spring Boot et de MongoDB permet d'obtenir des applications sécurisées, rapides et fiables nécessitant un temps de développement minimal.

Spring Boot crée des applications rapides prêtes pour la production. MongoDB et Spring Boot interagissent à l'aide de la classe Mongo Template et de l'interface Mongo Repository.

  • Modèle Mongo — il implémente un ensemble d'API prêtes à l'emploi. Un bon choix pour les opérations telles que les agrégations de mises à jour, entre autres ; de plus, Mongo Template offre un contrôle plus précis sur les requêtes personnalisées.
  • Référentiel Mongo est utilisé pour les requêtes de base impliquant de nombreux champs de document, comme l'affichage de documents et la création de données.

La configuration de Spring Boot MongoDB utilisant les deux approches ne nécessite que quelques lignes de code.

Spring Boot est un framework d'application pour les applications Web Java basé sur le framework MVC (Model-View-Controller). Son injection de dépendances gère des fonctionnalités telles que la sécurité, l'accès et l'initialisation de la base de données, permettant aux développeurs de se concentrer sur la logique métier. De plus, il est construit sur le framework Spring, principalement pour les API REST et nécessite très peu de configurations. Il comporte quatre couches :

La couche de présentation — La partie vue du framework MVC gère le front-end.

La couche métier est le contrôleur où toute la logique métier et les validations sont effectuées.

Couche de persistance — Cette couche traduit les objets métier en objets de base de données.

Couche de base de données — Les opérations CRUD (Create, Read, Update, Delete) réelles.

MongoDB est une base de données rapide capable de gérer d'énormes quantités de données organisées et non structurées, ce qui la rend idéale pour les applications Web. MongoDB stocke les données sous forme d'objets JSON binaires, ce qui simplifie la récupération des données. Le framework Spring comprend des connecteurs robustes qui permettent des opérations de base de données efficaces avec MongoDB.

Nous nous intéressons uniquement aux couches de persistance et de base de données dans cet exemple de didacticiel Spring Boot with MongoDB. Nous exécuterons notre logiciel via un environnement de développement intégré (IDE) pour maintenir un fort accent sur les opérations CRUD. Pour connecter Spring Boot et MongoDB, nous allons ajouter des configurations Spring Boot MongoDB.

Ce que nous allons construire dans cet exemple

Développons la liste de courses d'un utilisateur fictif. Nous effectuerons les procédures suivantes :

  1. Nous définissons un article d'épicerie Plain Old Java Object (POJO) avec un ID, un nom, une quantité et une catégorie dans notre application Spring.
  2. Par la suite, nous effectuons des actions de création, de lecture, de mise à jour et de suppression (CRUD) via l'interface publique de MongoRepository.
  3. Enfin, nous montrons une méthode différente pour modifier des documents en utilisant la classe MongoTemplate.

Prérequis

Nous avons besoin :

  • Cluster MongoDB Atlas (si vous n'avez pas encore de compte, inscrivez-vous gratuitement avant de passer à la phase suivante).
  • Initialisation du printemps
  • Java 1.8
  • Maven (installez Maven en allant dans "Aide -> puis Installer un nouveau logiciel" dans Eclipse).
  • Un environnement de développement intégré (IDE) importera les bibliothèques et dépendances essentielles. L'Eclipse sera utilisé pour cette illustration de projet.

Pour commencer, créez un projet Spring Boot avec les paramètres suivants à l'aide de Spring Initializr :

Choisissez Maven Project avec Java (8) comme langage de programmation et Spring Boot 2.5.3 comme version. De plus, ajoutez les dépendances Spring Web et Spring Data MongoDB. Spring Web intègre le serveur Apache Tomcat, Spring MVC et REST dans votre application, pour centraliser la gestion de toutes les dépendances courantes.

Nous exploitons la dépendance Spring Data MongoDB pour accéder aux données de notre cluster MongoDB Atlas dans cette application.

Entrez les métadonnées du projet (comme illustré ci-dessus) et choisissez l'option JAR. Spring Initializr gère la création du fichier pom.xml pendant que Maven télécharge les dépendances requises via pom.xml.

Ceci termine nos préparatifs pour les réglages. Ensuite, nous pouvons cliquer sur le bouton Générer pour générer tous les fichiers nécessaires pour amorcer le projet Spring Boot. Après cela, le navigateur commencera à télécharger automatiquement un fichier ZIP.

Après avoir téléchargé le fichier ZIP, décompressez le projet. Depuis l'IDE, ouvrez le projet. Vous pouvez voir un exemple de structure de projet similaire à ceci :

Comme nous pouvons le voir, les dépendances que nous avons ajoutées sont incluses dans le fichier pom.xml en tant qu'artefactId :

Il est temps de remplir le sous-répertoire src/main/java avec du contenu.

Mise en œuvre du modèle MongoDB

La classe POJO ou GroceryItem sert de modèle ici.

Créez un package nommé "com.example.mdbspringboot.model" et incluez-y la classe GroceryItem.java.

L'annotation @Document est utilisée pour spécifier le nom de la collection que le modèle utilisera. MongoDB créera la collection si elle n'existe pas déjà.

Nous pouvons générer des getters et des setters pour ce code en utilisant l'option Eclipse Source -> Generate Getters and Setters. Tout d'abord, utilisez l'annotation @Id pour spécifier la clé primaire _id du document MongoDB. MongoDB produira automatiquement un champ _id lors de la création du document si nous ne spécifions rien.

Implémentation de l'API MongoDB dans Spring Boot

Le référentiel est l'endroit où l'API est implémentée. Il sert de pont entre la base de données et le modèle, donnant accès à toutes les activités CRUD.

Créez un package nommé "com.example.mdbspringboot.repository" pour contenir tous les fichiers du référentiel.

Nous créons une interface publique pour ItemRepository qui étend l'interface MongoRepository.

La première approche, findItemByName, nécessite un argument de requête, qui spécifie le champ sur lequel la requête doit être filtrée. Ceci est spécifié à l'aide de l'annotation @Query. La deuxième technique tire parti du champ catégorie pour récupérer tous les objets appartenant à une catégorie spécifique. Nous ne voulons que le nom et le numéro du champ projeté dans la réponse à la requête ; par conséquent, nous définissons ces champs sur 1. Nous réappliquons la méthode count() dans son état actuel.

Exemples de MongoDB avec Spring Boot CRUD

Nous sommes maintenant prêts à développer notre application Spring et à tester les méthodes.

Pour créer un lien vers MongoDB Atlas, nous définissons la chaîne de connexion dans le fichier application.properties du dossier src/main/resources. La chaîne de connexion du cluster est accessible dans l'interface utilisateur Atlas. Aucun autre fichier n'est requis pour inclure le code lié à la connexion. Spring Boot gère la connexion à la base de données en notre nom.

De plus, nous spécifions ici le nom de la base de données - MongoDB en créera une si elle n'existe pas.

Nous n'utilisons pas le contrôleur ou la vue dans cet exemple Spring Boot MongoDB. Au lieu de cela, pour afficher la sortie sur la console, nous utiliserons un CommandLineRunner.

Créez la classe principale MdbSpringBootApplication.java dans le package racine com.example.mdbspringboot :

Pour exécuter l'application Spring, notre classe MdbSpringBootApplication utilise l'interface CommandLineRunner. ItemRepository est Autowired, ce qui signifie que Spring le découvrira automatiquement. L'annotation @SpringBootApplication est utilisée pour initialiser le contexte d'application. De plus, nous activons les référentiels Mongo avec @EnableMongoRepositories. La structure de notre projet devrait maintenant ressembler à ceci :

Ajoutons maintenant les opérations du référentiel à la classe principale, qui sera utilisée pour les opérations CRUD :

Créer une opération de démarrage Spring MongoDB

Nous utiliserons la fonction de sauvegarde pour créer de nouveaux documents. Nous pouvons accéder à la méthode save via la classe SimpleMongoRepository, qui utilise le protocole MongoRepository. Notre interface ItemRepository étend l'interface ItemRepository de MongoRepository.

La méthode save acceptera un paramètre du type GroceryItem. Cette section construira cinq articles d'épicerie (documents), puis utilisera la fonction de sauvegarde pour les stocker dans MongoDB.

Opérations de lecture Spring Boot MongoDB

Nous effectuons quatre opérations de lecture distinctes dans cette application :

Utilisez la fonction findAll() pour récupérer tous les documents (articles d'épicerie).

La fonction findItemByName renvoie un seul élément (document) en fonction de son champ de nom.

Récupérer une liste d'objets organisés par catégorie.

Calculez le nombre total d'objets.

Nous pouvons concevoir une fonction d'assistance pour formater le résultat des opérations de lecture :

Opération de mise à jour de MongoDB Spring Boot

Supposons que nous changions d'avis et préférions le terme « grignotines » à « collations » sur notre liste d'épicerie. Nous aurions besoin de mettre à jour tous les documents contenant la catégorie "collations". Pour ce faire, nous devons d'abord récupérer tous les papiers appartenant à la catégorie "snacks", changer la catégorie en "munchies", puis enregistrer tous les documents.

Opération de suppression de MongoDB Spring Boot

Au lieu de modifier une catégorie ou un article, nous pouvons supprimer un article d'épicerie de notre liste. À l'aide de la fonction prédéfinie deleteById, nous pouvons supprimer l'article d'épicerie avec un identifiant spécifique.

Nous pourrions utiliser le groceryItemRepo.deleteAll(); fonction pour supprimer tous les éléments. La suppression de tous les documents de la collection ne les supprimera pas.

Assemblage des opérations CRUD

Ensuite, nous allons implémenter le CommandLineRunner. Pour invoquer les méthodes précédentes, utilisez la méthode run() :

Les instructions system.out sont utilisées pour améliorer l'apparence de la sortie.

Lorsque le logiciel est exécuté, la sortie suivante est attendue :

Fonction de mise à jour de MongoDB Spring Boot en conjonction avec MongoTemplate

De plus, nous pouvons utiliser la classe MongoTemplate pour effectuer des actions de mise à jour sur un champ spécifique. Il inclut la fonctionnalité par défaut du package org.springframework.data.mongodb.core.query. Nous n'avons pas à écrire une grande quantité de code et la mise à jour peut être effectuée avec une seule requête de base de données. MongoTemplate peut également être utilisé pour des processus plus compliqués tels que les agrégations (non couverts par ce guide).

Un référentiel personnalisé doit être créé avant d'utiliser une classe appelée MongoTemplate. C'est là que la requête pour la mise à jour sera construite.

Permettez-moi de montrer comment construire une méthode qui met à jour la quantité d'un article de supermarché.

Construisez une interface CustomItemRepository :

Nous pouvons étendre l'interface avec autant de méthodes que nécessaire et fournir des exemples dans la classe CustomItemRepositoryImpl :

Spring importera les dépendances d'objet car MongoTemplate est @Autowired. De plus, l'annotation @Component permet à Spring de découvrir l'interface CustomItemRepository.

L'étape suivante consiste à invoquer cette fonction depuis notre classe principale. Comme pour le epicItemRepo, nous devons définir notre customRepo comme suit :

Ensuite, dans la classe principale, créez la méthode suivante qui invoque notre fonction customRepo :

Ajoutez la méthode suivante à la méthode run afin qu'elle soit invoquée lors de l'exécution du programme :

Vous devriez obtenir le résultat suivant :

Comme indiqué précédemment, nous avons pu effectuer la modification dans une seule transaction de base de données au lieu de MongoRepository, qui nécessitait trois actions :rechercher, définir et enregistrer. MongoTemplate inclut également la méthode updateMulti(), qui permet de mettre à jour plusieurs documents simultanément.

Conclusion

Nous avons démontré dans cet article à quel point il est simple d'intégrer MongoDB à Spring Boot. Aucun autre code n'est requis pour se connecter à MongoDB Atlas. MongoDB Atlas fournit une interface facile à utiliser pour stocker et accéder aux données depuis n'importe quel endroit. Si vous avez terminé ce didacticiel simple, nous pensons que vous comprenez maintenant comment utiliser Spring Boot avec MongoDB. Si vous rencontrez des difficultés, contactez-nous via la section des commentaires pour obtenir de l'aide. Merci d'avoir lu.