H2 est une base de données rapide et légère qui peut être persistée (dans un fichier) ou non. Je la trouve utile pour au moins 2 cas d’utilisation :
– Lorsque je veux réaliser un PoC, ça me permet d’avoir une base de données configurée en 2 minutes.
– Lorsque je veux faire des tests d’intégration qui communiquent avec une BDD SQL, H2 est une base de données très légère et très rapide qui fait très bien l’affaire.
Ce que j’aime beaucoup avec une base de données H2, c’est qu’elle est vraiment facile à installer et elle vient même avec une petite interface web qui permet de voir sa base et d’exécuter des requêtes.
On va voir étape par étape comment utiliser très simplement une base H2 dans notre application SpringBoot utilisant SpringDataJPA, c’est parti 😎
Note: Cette dépendance est présente dans votre pom.xml si vous sélectionnez “h2” dans l’initialize spring boot (https://start.spring.io/)
II. Configuration
1. Pour une base sans persistence
Pour une base “volatile” c’est à dire qui sera remise à zéro à chaque fois que vous relancez votre application (ce qui est utile pour les tests par exemple) :
Dans le fichier application.properties à la racine de votre projet, ajoutez les lignes suivantes:
Relancez votre application. Si vous allez sur URL http://localhost:port/h2 vous devriez voir une fenêtre de connexion. En remplaçant les informations par celles spécifiées dans votre properties :
Exemple pour une base persistée :
Exemple pour une base non-persistée :
Puis “connect”, vous verrez le contenu de votre base et pourrez effectuer vos requêtes.
C’est tout ce qu’il y a à faire, à présent vos données vont être persistées dans votre base H2 🙂
IV. Pour aller plus loin
Vous pouvez initialiser votre base de données H2 via des scripts SQL qui seront lus au démarrage de l’application.
– Vous pouvez initialiser sa structure via un fichier schema.sql présent dans les ressources de votre projet (à la racine).
– Vous pouvez insérer des données via un fichier data.sql présent dans les ressources de votre projet (à la racine).
Note: suivant votre version de SpringBoot, la façon dont est exécutée ces scripts par défaut peut changer (ordre d’exécution, type de base pour laquelle ils se jouent etc..). Ca a notamment bien changé à partir de SpringBoot 2.5
donc pensez bien à lire la doc 🙂
Exemple:
Résultat:
Conclusion
On a vu ensemble comment pouvoir utiliser H2 dans votre projet SpringBoot et quelques options disponibles. Que ça soit dans les tests ou pour des PoC, je trouve que c’est une base de données légère, facile à configurer qui fait très bien l’affaire 🙂
On va voir comment avoir en quelques minutes des assertions qui vont vérifier les endpoints de notre API avec des scénarios de ce genre:
Feature: Create a new account
As a visitor,
I can create an account to access the game
Scenario: A visitor creates an account
When I fill the login form with
| email | password |
| [email protected] | Jh0...
Depuis .NET 9, le le support d’OpenAPI est directement inclus dans .NET et ne passe plus par les librairies Swagger par défaut (plus d’info sur ce choix ici si jamais ça vous intéresse).
De façons simplifiée, la librairie Swashbuckle.AspNetCore.Sw...
Description du problème
Par défaut, il n’est pas autorisé de faire des requêtes entre une application qui est dans un domaine A vers une autre qui serait dans un domaine B (pour des raisons de sécurité, il y a plus de détails dans les sources).
S...
On va créer pas-à-pas un raccourci qui nous permettra de générer un IBAN et de l’insérer à l’endroit où se trouve notre curseur. Si vous n’avez pas fait le setup pour développer un plugin Jetbrains, je vous invite à lire notre article sur le sujet.
...