Spring Boot mit H2-Datenbank

1. Übersicht

In diesem Tutorial werden wir die Verwendung von H2 mit Spring Boot untersuchen. Genau wie bei anderen Datenbanken wird es im Spring Boot-Ökosystem von Grund auf unterstützt.

2. Abhängigkeiten

Beginnen wir mit den Abhängigkeiten h2 und Spring-Boot-Starter-Data-JPA :

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

3. Datenbankkonfiguration

Standardmäßig konfiguriert Spring Boot die Anwendung so, dass sie mit dem Benutzernamen sa und einem leeren Kennwort eine Verbindung zu einem In-Memory-Speicher herstellt .

Wir können diese Parameter jedoch ändern, indem wir der Datei application.properties die folgenden Eigenschaften hinzufügen :

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

Die speicherinterne Datenbank ist standardmäßig flüchtig und Daten gehen verloren, wenn wir die Anwendung neu starten.

Wir können dieses Verhalten mithilfe von dateibasiertem Speicher ändern. Dazu müssen wir die Datei spring.datasource.url aktualisieren :

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

Die Datenbank kann auch in anderen Modi betrieben werden.

4. Datenbankoperationen

Das Ausführen von CRUD-Operationen mit H2 in Spring Boot ist dasselbe wie mit anderen SQL-Datenbanken, und unsere Tutorials in der Spring Persistence-Reihe leisten gute Arbeit, um dies zu behandeln.

In der Zwischenzeit fügen wir eine Datei data.sql in src / main / resources hinzu :

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 nimmt die Datei data.sql automatisch auf und führt sie beim Start der Anwendung für unsere konfigurierte H2-Datenbank aus. Dies ist eine gute Möglichkeit, die Datenbank für Testzwecke oder andere Zwecke zu erstellen.

5. Zugriff auf die H2-Konsole

Die H2-Datenbank verfügt über eine eingebettete GUI-Konsole zum Durchsuchen des Inhalts einer Datenbank und zum Ausführen von SQL-Abfragen. Standardmäßig ist die H2-Konsole in Spring nicht aktiviert.

Um es zu aktivieren, müssen wir application.properties die folgende Eigenschaft hinzufügen :

spring.h2.console.enabled=true

Nach dem Starten der Anwendung können wir zu // localhost: 8080 / h2-console navigieren , auf der eine Anmeldeseite angezeigt wird.

Auf der Anmeldeseite geben wir dieselben Anmeldeinformationen an, die wir in application.properties verwendet haben :

Sobald wir eine Verbindung hergestellt haben, sehen wir eine umfassende Webseite, auf der alle Tabellen auf der linken Seite der Seite aufgelistet sind, und ein Textfeld zum Ausführen von SQL-Abfragen:

Die Webkonsole verfügt über eine Funktion zur automatischen Vervollständigung, die SQL-Schlüsselwörter vorschlägt. Die Tatsache, dass die Konsole leichtgewichtig ist, macht es praktisch, die Datenbank visuell zu überprüfen oder Raw SQL direkt auszuführen.

Darüber hinaus können wir die Konsole weiter konfigurieren, indem wir die folgenden Eigenschaften in den application.properties des Projekts mit unseren gewünschten Werten angeben:

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

Im obigen Snippet setzen wir den Konsolenpfad auf / h2-console , relativ zur Adresse und zum Port unserer laufenden Anwendung. Wenn unsere App unter // localhost: 9001 ausgeführt wird , ist die Konsole daher unter // localhost: 9001 / h2-console verfügbar .

Darüber hinaus setzen wir spring.h2.console.settings.trace auf false , um die Trace-Ausgabe zu verhindern, und können den Fernzugriff durch Setzen von spring deaktivieren . h2.console.settings.web-allow-other to false .

6. Fazit

Die H2-Datenbank ist vollständig kompatibel mit Spring Boot. Wir haben gesehen, wie man es konfiguriert und wie man die H2-Konsole zum Verwalten unserer laufenden Datenbank verwendet.

Der vollständige Quellcode ist auf GitHub verfügbar.