En tant que développeur Java, avez-vous déjà eu à développer différents types d'applications ? Peut-être des applications web ou bien des applications de bureau ? Si c’est le cas, alors vous avez certainement noté qu'indépendamment du type d’interface que vous créez, vos applications doivent toutes manipuler de la donnée.
Traiter des données au sein de nos applications pose la question de la persistance de la donnée, c'est-à-dire la sauvegarde de la donnée. Cette problématique est résolue par l’utilisation de bases de données. Les logiciels stockent nos données, et nous permettent ainsi d’y accéder, mais aussi de les modifier, voire de les supprimer.
OK super, mais comment mon application va interagir avec ces bases de données ?
C’est une excellente question et nous allons y répondre ensemble !
Découvrez la base de données NoSQL MongoDB
Tout d’abord, nous devons savoir quelle base de données nous utilisons. Ce cours est centré sur l’interaction avec la base de données MongoDB.
C’est quoi MongoDB ?
MongoDB est une base de données de type NoSQL qui utilise la notion de Document.
Attends attends, NoSQL ? Document ?
En quelques mots, les bases de données NoSQL sont des bases de données non relationnelles et qui n’utilisent pas le SQL. Elles permettent de répondre à des problématiques de performances pour le traitement de données non structurées.
Imaginez par exemple que vous deviez stocker des statistiques de joueurs de jeux vidéo. Les différents jeux n’ayant pas les mêmes caractéristiques de jeu, il serait presque impossible de constituer une structure de statistiques commune à tous les jeux. Et nous nous retrouverions avec de nombreuses données non structurées à gérer.
Dans cette situation, une base de données NoSQL pourrait bien être la bonne solution pour stocker nos données !
MongoDB est une base de données NoSQL basée sur les Documents, qui est l’un des types les plus couramment utilisés.
Pour comprendre plus précisément, reprenons ce qu’indique MongoDB sur la page d’accueil de son site web :
“En tant que programmeur, vous réfléchissez en termes d'objet. Désormais, il en va de même pour votre base de données.
MongoDB est une base de données de documents, ce qui signifie qu'elle stocke les données au format de documents JSON. Nous estimons qu'il s'agit de la façon la plus naturelle d'envisager les données, bien plus efficace et expressive que le modèle traditionnel basé sur des rangées et des colonnes.”
Autrement dit, MongoDB va persister vos données sous forme d’objet nommé Document. Pour réaliser cette persistance de documents, MongoDB utilise le format JSON.
Voilà qui est attirant pour nous développeurs Java ! Nous passons tout notre temps à travailler avec des objets, et MongoDB est capable de les stocker en l’état ! Ainsi, nous n'avons pas besoin de mettre au point une quelconque conversion de nos objets en table/colonne comme dans le cadre d'une base de données relationnelle.
Il est temps de passer à la suite ! Côté Java, comment on fait pour interagir avec une base de données MongoDB ?
Utilisez le driver Java de MongoDB
Faire communiquer une application Java avec une base de données, c’est comme mettre deux personnes de 2 langues différentes dans une même pièce. Si l’un ou l’autre ne parle pas la langue du second, la communication sera impossible !
Dans cette situation fictive, une solution serait d’envoyer un interprète ! Ce dernier, connaissant les deux langues, pourra servir d’intermédiaire entre les deux personnes.
MongoDB a d’ailleurs créé cet interprète en développant (roulement de tambour 🥁🥁) le “driver Java de MongoDB”. Ce dernier est codé en Java et vous permettra, dans vos applications Java, d’exécuter des opérations sur la base MongoDB de votre choix !
Pour récupérer ce driver, vous pouvez par exemple utiliser une dépendance Maven :
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.10</version>
</dependency>
Il y a plusieurs avantages à cette solution :
Elle est recommandée par MongoDB.
Elle favorise la performance, c’est-à-dire qu’elle optimise le temps de traitement des requêtes lors de l'interaction avec MongoDB.
Elle va vous pousser à comprendre le fonctionnement de MongoDB.
L’inconvénient principal qui émerge est donc que pour utiliser pleinement le driver, il faut avoir une maîtrise complète de MongoDB et du langage de requête natif.
Alors, comment fait-on pour interagir avec notre base de données NoSQL ?
Voyons cela de suite !
Utilisez le framework Spring Data MongoDB
Programmer en Java c’est bien, mais il faut reconnaître que notre capacité d'adaptation peut parfois être mise à l’épreuve… En effet, un projet nous fera travailler sur une interface web, un autre nous fera utiliser une base de données SQL, ou encore un autre une énième technologie.
Pour répondre à cette multitude de besoins techniques, il existe un framework nommé Spring. Ce framework, peut-être le plus utilisé au monde dans la communauté Java, est extrêmement prisé pour sa capacité à s’adapter à de nombreux besoins !
Par exemple, il vous aide à implémenter des interfaces web, des API, à communiquer avec d’autres applications, avec des bases de données, à traiter vos problématiques de sécurité, à gérer votre architecture micro-services, et j’en passe…
Wahou ! Mais c’est vraiment possible ?
Absolument ! Et en plus, il fait ça bien.
Spring Framework fonctionne sur la base de nombreux sous-modules Spring dédiés à une tâche particulière. Par exemple, Spring Security pour la sécurité, ou Spring Web pour le Web (facile à suivre, pas vrai ? ).
L’un des sous-modules de Spring est Spring Boot. Ce dernier est particulièrement utile car il nous permet de facilement mettre en œuvre les autres modules de Spring.
Et MongoDB dans tout ça ?
On y arrive, on y arrive ! Les concepteurs du framework Spring sont conscients de la multitude de bases de données sur le marché, et ils ont donc créé un ensemble de sous-modules dédiés à cette problématique : Spring Data. Spring Data vous permet de communiquer avec de nombreux types de bases de données tant relationnelles (SQL) que non relationnelles (NoSQL).
Par exemple, pour communiquer avec des bases de données relationnelles, il existe le module Spring Data JPA. Pour en savoir plus, je vous recommence de suivre le cours Utilisez Spring Data pour interagir avec vos bases de données.
Et devinez quoi, pour communiquer avec une base de données MongoDB, il existe également un module dédié, nommé Spring Data MongoDB, dont voici la documentation officielle en anglais.
Les avantages sont :
Spring Data MongoDB étant un sous-module de Spring, pour les projets où Spring est déjà utilisé, la mise en œuvre est très facilitée ;
il repose sur le même fonctionnement que les autres modules Spring Data. Si vous avez déjà travaillé avec Spring Data JPA, il vous sera familier ;
il vous évite d’apprendre le fonctionnement de MongoDB en détail.
En revanche, ce module est une couche supplémentaire entre votre application Java et MongoDB. De ce fait, une mauvaise utilisation pourrait impacter les performances de votre application.
En conclusion, voici un tableau comparatif des 2 méthodes présentées dans ce chapitre :
| Avantages | Inconvénients | Exemples de situations professionnelles |
Driver Java de MongoDB |
|
|
|
Spring Data MongoDB |
|
|
|
Ce cours va vous apprendre à utiliser Spring Data MongoDB !
Découvrez votre mission !
Ce cours vous amène dans le rôle d’un développeur freelance ! Il existe de nombreux types de développeurs freelance, certains ont une spécialité “données”, d’autres sont plus “généralistes”. Certains vont traiter un projet à la fois et d’autres, plusieurs en parallèle. Mais tous les freelances vont généralement se confronter à la problématique de la crédibilité.
Après tout, quels sont vos gages de qualité ? Quelles preuves allez-vous mettre en avant ? Comment gagnerez-vous en visibilité ?
Il y a de nombreuses réponses à ces questions. L’une des potentielles solutions est de partager ses connaissances techniques à travers des articles ou des tutoriels. Cette solution est très appréciée car non seulement elle peut avoir un effet positif sur notre activité de freelance, mais elle va nous permettre de contribuer à la communauté, et en tant que développeur, généralement, on aime ça !
Nous voilà lancés dans notre nouveau projet : développer une plateforme de blogging pour poster nos articles, nos tutoriaux, recevoir des commentaires, etc. Bien sûr, on pourrait utiliser une plateforme existante mais cela ne nous intéresse pas, car on ne perd pas une occasion de coder !
Tout au long de ce cours, nous construirons la partie back de notre plateforme de blogging, et plus précisément ce qu’on appelle la couche d’accès aux données. La partie front ne sera pas implémentée.
Au sein de cette couche d’accès aux données, nous implémenterons les opérations du CRUD (Create Read Update Delete). Ainsi, au moment où la couche suivante sera implémentée, nous disposerons déjà de tout le nécessaire pour manipuler nos données.
En résumé
MongoDB est une base de données NoSQL qui repose sur les documents. Elle permet de traiter efficacement des données sous forme d’objets, stockées au format JSON.
MongoDB a créé un driver Java pour interagir avec MongoDB. Cette solution est performante mais possède un certain niveau de complexité.
Le framework Spring Data MongoDB permet de communiquer avec une base MongoDB. La mise en œuvre est facilitée par le framework Spring, mais en cas de mauvaise utilisation, les performances peuvent être impactées.
Choisissez votre méthode en fonction des besoins et contraintes de votre projet !
Prêt à mettre en place votre environnement de développement ? Allez, let’s go !