Spring Boot avec base de données H2

1. Vue d'ensemble

Dans ce didacticiel, nous allons explorer l'utilisation de H2 avec Spring Boot. Tout comme les autres bases de données, il existe un support intrinsèque complet dans l'écosystème Spring Boot.

2. Dépendances

Commençons par les dépendances h2 et spring-boot-starter-data-jpa :

 org.springframework.boot spring-boot-starter-data-jpa   com.h2database h2 runtime 

3. Configuration de la base de données

Par défaut, Spring Boot configure l'application pour se connecter à un magasin en mémoire avec le nom d'utilisateur sa et un mot de passe vide .

Cependant, nous pouvons modifier ces paramètres en ajoutant les propriétés suivantes au fichier application.properties :

spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

De par sa conception, la base de données en mémoire est volatile et les données seront perdues lorsque nous redémarrons l'application.

Nous pouvons changer ce comportement en utilisant le stockage basé sur des fichiers. Pour ce faire, nous devons mettre à jour le spring.datasource.url :

spring.datasource.url=jdbc:h2:file:/data/demo

La base de données peut également fonctionner dans d'autres modes.

4. Opérations de base de données

Effectuer des opérations CRUD avec H2 dans Spring Boot est le même qu'avec d'autres bases de données SQL, et nos didacticiels de la série Spring Persistence font un bon travail pour couvrir cela.

En attendant, ajoutons un fichier data.sql dans src / main / resources :

DROP TABLE IF EXISTS billionaires; CREATE TABLE billionaires ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(250) NOT NULL, last_name VARCHAR(250) NOT NULL, career VARCHAR(250) DEFAULT NULL ); INSERT INTO billionaires (first_name, last_name, career) VALUES ('Aliko', 'Dangote', 'Billionaire Industrialist'), ('Bill', 'Gates', 'Billionaire Tech Entrepreneur'), ('Folrunsho', 'Alakija', 'Billionaire Oil Magnate');

Spring Boot récupérera automatiquement le data.sql et l'exécutera sur notre base de données H2 configurée lors du démarrage de l'application. C'est un bon moyen d'amorcer la base de données à des fins de test ou à d'autres fins.

5. Accès à la console H2

La base de données H2 a une console GUI intégrée pour parcourir le contenu d'une base de données et exécuter des requêtes SQL. Par défaut, la console H2 n'est pas activée dans Spring.

Pour l'activer, nous devons ajouter la propriété suivante à application.properties :

spring.h2.console.enabled=true

Ensuite, après le démarrage de l'application, nous pouvons accéder à // localhost: 8080 / h2-console , qui nous présentera une page de connexion.

Sur la page de connexion, nous fournirons les mêmes informations d'identification que celles que nous avons utilisées dans l' application.properties :

Une fois que nous nous connectons, nous verrons une page Web complète qui répertorie toutes les tables sur le côté gauche de la page et une zone de texte pour exécuter des requêtes SQL:

La console Web dispose d'une fonction de saisie semi-automatique qui suggère des mots-clés SQL. Le fait que la console soit légère le rend pratique pour inspecter visuellement la base de données ou exécuter directement du SQL brut.

De plus, nous pouvons configurer davantage la console en spécifiant les propriétés suivantes dans l' application.properties du projet avec les valeurs souhaitées:

spring.h2.console.path=/h2-console spring.h2.console.settings.trace=false spring.h2.console.settings.web-allow-others=false

Dans l'extrait de code ci-dessus, nous définissons le chemin de la console sur / h2-console , qui est relatif à l'adresse et au port de notre application en cours d'exécution. Par conséquent, si notre application s'exécute sur // localhost: 9001 , la console sera disponible sur // localhost: 9001 / h2-console.

De plus, nous définissons spring.h2.console.settings.trace sur false pour empêcher la sortie de trace, et nous pouvons également désactiver l'accès à distance en définissant spring . h2.console.settings.web-allow-others à false .

6. Conclusion

La base de données H2 est entièrement compatible avec Spring Boot. Nous avons vu comment le configurer et comment utiliser la console H2 pour gérer notre base de données en cours d'exécution.

Le code source complet est disponible à l'adresse over sur GitHub.