Où la base de données intégrée de H2 stocke-t-elle les données?

1. Introduction

Dans cet article, nous allons apprendre à configurer l'application Spring Boot pour utiliser la base de données H2 intégrée, puis voir où la base de données intégrée H2 stocke les données.

La base de données H2 est une base de données légère et open-source sans support commercial à ce stade. Nous pouvons l'utiliser dans différents modes:

  • mode serveur - pour les connexions à distance utilisant JDBC ou ODBC sur TCP / IP
  • mode intégré - pour les connexions locales qui utilisent JDBC
  • mode mixte - cela signifie que nous pouvons utiliser H2 pour les connexions locales et distantes

H2 peut être configuré pour fonctionner comme une base de données en mémoire, mais il peut également être persistant, par exemple, ses données seront stockées sur le disque. Pour les besoins de ce didacticiel, nous allons travailler avec la base de données H2 en mode intégré avec la persistance activée afin que nous ayons des données sur le disque .

2. Base de données H2 intégrée

Si nous voulons utiliser la base de données H2, nous devrons ajouter les dépendances Maven h2 et spring-boot-starter-data-jpa à notre fichier pom.xml :

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

3. Mode de persistance intégré du H2

Nous avons déjà mentionné que H2 pourrait utiliser un système de fichiers pour stocker les données de la base de données. Le plus grand avantage de cette approche par rapport à celle en mémoire est que les données de la base de données ne sont pas perdues après le redémarrage de l'application.

Nous sommes en mesure de configurer le mode de stockage via la propriété spring.datasource.url dans notre fichier application.properties . De cette façon, nous pouvons configurer la base de données H2 pour utiliser l'approche en mémoire en ajoutant le paramètre mem dans l'URL de la source de données, suivi du nom de la base de données:

spring.datasource.url=jdbc:h2:mem:demodb

Si nous utilisons le mode de persistance basé sur les fichiers, nous définirons l'une des options disponibles pour les emplacements de disque au lieu du paramètre mem . Dans la section suivante, nous discuterons de ces options.

Voyons quels fichiers la base de données H2 crée:

  • demodb.mv.db - contrairement aux autres, ce fichier est toujours créé et contient des données, un journal de transactions et des index
  • demodb.lock.db - il s'agit d'un fichier de verrouillage de base de données et H2 le recrée lorsque la base de données est en cours d'utilisation
  • demodb.trace.db - ce fichier contient des informations de trace
  • demodb.123.temp.db - utilisé pour gérer des objets blob ou d'énormes ensembles de résultats
  • demodb.newFile - H2 utilise ce fichier pour le compactage de la base de données et il contient un nouveau fichier de stockage de base de données
  • demodb.oldFile - H2 utilise également ce fichier pour le compactage de la base de données et il contient l'ancien fichier de stockage de la base de données

4. Emplacement de stockage de la base de données intégrée de H2

H2 est très flexible concernant le stockage des fichiers de base de données. À ce moment, nous pouvons configurer son répertoire de stockage pour:

  • répertoire sur disque
  • répertoire utilisateur actuel
  • répertoire de projet actuel ou répertoire de travail

4.1. Répertoire sur disque

Nous pouvons définir un emplacement de répertoire spécifique où nos fichiers de base de données seront stockés:

spring.datasource.url=jdbc:h2:file:C:/data/demodb

Notez que dans cette chaîne de connexion, le dernier segment fait référence au nom de la base de données . De plus, même si nous manquons le mot-clé file dans cette URL de connexion à la source de données, H2 le gérera et créera des fichiers à l'emplacement indiqué.

4.2. Répertoire des utilisateurs actuels

Si nous voulons stocker des fichiers de base de données dans le répertoire utilisateur actuel, nous utiliserons l'URL de la source de données qui contient un tilde (~) après le mot-clé file :

spring.datasource.url=jdbc:h2:file:~/demodb

Par exemple, dans les systèmes Windows, ce répertoire sera C: / Users / .

Pour stocker les fichiers de base de données dans le sous-répertoire du répertoire utilisateur actuel:

spring.datasource.url=jdbc:h2:file:~/subdirectory/demodb

Notez que si le sous-répertoire n'existe pas, il sera créé automatiquement .

4.3. Répertoire de travail actuel

Le répertoire de travail actuel est celui dans lequel l'application est démarrée et il est référencé par un point (.) Dans l'URL de la source de données. Si nous voulons des fichiers de base de données là-bas, nous le configurerons comme suit:

spring.datasource.url=jdbc:h2:file:./demodb

Pour stocker les fichiers de base de données dans le sous-répertoire du répertoire de travail actuel:

spring.datasource.url=jdbc:h2:file:./subdirectory/demodb

Notez que si le sous-répertoire n'existe pas, il sera créé automatiquement.

5. Conclusion

Dans ce court tutoriel, nous avons discuté de certains aspects de la base de données H2 et montré où la base de données intégrée de H2 stocke les données. Nous avons également appris à configurer l'emplacement des fichiers de la base de données.

L'exemple de code complet est disponible à l'adresse over sur GitHub.