Wo speichert die eingebettete Datenbank von H2 die Daten?

1. Einleitung

In diesem Artikel erfahren Sie, wie Sie die Spring Boot-Anwendung für die Verwendung der eingebetteten H2-Datenbank konfigurieren und dann sehen, wo die eingebettete H2-Datenbank die Daten speichert.

Die H2-Datenbank ist eine einfache Open-Source-Datenbank ohne kommerzielle Unterstützung. Wir können es in verschiedenen Modi verwenden:

  • Servermodus - für Remoteverbindungen mit JDBC oder ODBC über TCP / IP
  • eingebetteter Modus - für lokale Verbindungen, die JDBC verwenden
  • Mixed-Mode - Dies bedeutet, dass wir H2 sowohl für lokale als auch für Remote-Verbindungen verwenden können

H2 kann so konfiguriert werden, dass es als speicherinterne Datenbank ausgeführt wird, es kann jedoch auch persistent sein, z. B. werden seine Daten auf der Festplatte gespeichert. In diesem Lernprogramm arbeiten wir mit der H2-Datenbank im eingebetteten Modus mit aktivierter Persistenz, damit Daten auf der Festplatte gespeichert werden .

2. Eingebettete H2-Datenbank

Wenn wir die H2-Datenbank verwenden möchten, müssen wir die haven- und spring-boot-Starter-Daten-jpa- Maven-Abhängigkeiten zu unserer pom.xml- Datei hinzufügen :

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

3. Der eingebettete Persistenzmodus von H2

Wir haben bereits erwähnt, dass H2 ein Dateisystem zum Speichern von Datenbankdaten verwenden könnte. Der größte Vorteil dieses Ansatzes im Vergleich zum In-Memory-Ansatz besteht darin, dass Datenbankdaten nach dem Neustart der Anwendung nicht verloren gehen.

Wir können den Speichermodus über die Eigenschaft spring.datasource.url in unserer Datei application.properties konfigurieren . Auf diese Weise können wir die H2-Datenbank so einstellen, dass sie den In-Memory-Ansatz verwendet, indem wir den Parameter mem in die Datenquellen-URL einfügen, gefolgt vom Datenbanknamen:

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

Wenn wir den dateibasierten Persistenzmodus verwenden, legen wir anstelle des mem- Parameters eine der verfügbaren Optionen für Speicherorte fest . Im nächsten Abschnitt werden wir diese Optionen diskutieren.

Mal sehen, welche Dateien die H2-Datenbank erstellt:

  • demodb.mv.db - Im Gegensatz zu den anderen wird diese Datei immer erstellt und enthält Daten, Transaktionsprotokolle und Indizes
  • demodb.lock.db - Es handelt sich um eine Datenbanksperrdatei, die von H2 neu erstellt wird, wenn die Datenbank verwendet wird
  • demodb.trace.db - Diese Datei enthält Trace-Informationen
  • demodb.123.temp.db - wird zum Behandeln von Blobs oder großen Ergebnismengen verwendet
  • demodb.newFile - H2 verwendet diese Datei für die Datenbankkomprimierung und enthält eine neue Datenbankspeicherdatei
  • demodb.oldFile - H2 verwendet diese Datei auch für die Datenbankkomprimierung und enthält eine alte Datenbankspeicherdatei

4. Speicherort der eingebetteten Datenbank von H2

H2 ist sehr flexibel in Bezug auf die Speicherung von Datenbankdateien. In diesem Moment können wir das Speicherverzeichnis wie folgt konfigurieren:

  • Verzeichnis auf der Festplatte
  • aktuelles Benutzerverzeichnis
  • aktuelles Projektverzeichnis oder Arbeitsverzeichnis

4.1. Verzeichnis auf der Festplatte

Wir können einen bestimmten Verzeichnisspeicherort festlegen, in dem unsere Datenbankdateien gespeichert werden:

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

Beachten Sie, dass in dieser Verbindungszeichenfolge der letzte Block auf den Datenbanknamen verweist . Auch wenn das Schlüsselwort file in dieser URL für die Datenquellenverbindung fehlt, verwaltet H2 es und erstellt Dateien am angegebenen Speicherort.

4.2. Aktuelles Benutzerverzeichnis

Wenn wir Datenbankdateien im aktuellen Benutzerverzeichnis speichern möchten, verwenden wir die Datenquellen-URL, die nach dem Schlüsselwort file eine Tilde (~) enthält :

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

In Windows-Systemen lautet dieses Verzeichnis beispielsweise C: / Users / .

So speichern Sie Datenbankdateien im Unterverzeichnis des aktuellen Benutzerverzeichnisses:

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

Beachten Sie, dass das Unterverzeichnis automatisch erstellt wird , wenn es nicht vorhanden ist .

4.3. Aktuelles Arbeitsverzeichnis

Das aktuelle Arbeitsverzeichnis ist eines, in dem die Anwendung gestartet wird, und es wird als Punkt (.) In der Datenquellen-URL referenziert. Wenn wir dort Datenbankdateien möchten, konfigurieren wir diese wie folgt:

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

So speichern Sie Datenbankdateien im Unterverzeichnis des aktuellen Arbeitsverzeichnisses:

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

Beachten Sie, dass das Unterverzeichnis automatisch erstellt wird, wenn es nicht vorhanden ist.

5. Schlussfolgerung

In diesem kurzen Tutorial haben wir einige Aspekte der H2-Datenbank besprochen und gezeigt, wo die eingebettete H2-Datenbank die Daten speichert. Wir haben auch gelernt, wie der Speicherort der Datenbankdateien konfiguriert wird.

Das vollständige Codebeispiel ist auf GitHub verfügbar.