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 🙂
Avant .Net 8, tester du code qui utilise DateTime.Now() n’était pas trivial, on devait faire en sorte de mocker la Clock dans nos tests. Depuis .Net 8, c’est beaucoup plus facile grâce à TimeProvider inclut par défaut !
En deux mots, TimeProvider est une classe abstraite et on va pouvoir injecter dans nos tests une implémentation “Fake” qui va nous permettre de changer la date actu...
La gestion des erreurs de son API est très importante pour que les consommateurs puissent avoir une description claire du problème mais c’est souvent fastidieux à maintenir.
On va voir comment avoir des statuts de réponse cohérent et des messages d’erre...
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 c...
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...