Waar slaat de ingesloten database van H2 de gegevens op?

1. Inleiding

In dit artikel zullen we leren hoe u de Spring Boot-toepassing configureert om de ingesloten H2-database te gebruiken en vervolgens kijken waar de ingesloten H2-database de gegevens opslaat.

H2-database is een lichtgewicht en open-source database zonder commerciële ondersteuning op dit moment. We kunnen het in verschillende modi gebruiken:

  • servermodus - voor externe verbindingen met JDBC of ODBC via TCP / IP
  • embedded mode - voor lokale verbindingen die JDBC gebruiken
  • mixed-mode - dit betekent dat we H2 kunnen gebruiken voor zowel lokale als externe verbindingen

H2 kan worden geconfigureerd om te worden uitgevoerd als een in-memory database, maar het kan ook persistent zijn, de gegevens worden bijvoorbeeld op schijf opgeslagen. Ten behoeve van deze tutorial, we werken met de H2-database in embedded modus met ingeschakelde persistentie, dus we hebben gegevens op de schijf.

2. Ingebouwde H2-database

Als we de H2-database willen gebruiken, moeten we de h2 en spring-boot-starter-data-jpa Maven afhankelijkheden van onze pom.xml het dossier:

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

3. H2's ingebouwde persistentiemodus

We noemden al dat H2 een bestandssysteem zou kunnen gebruiken om databasegegevens op te slaan. Het grootste voordeel van deze benadering in vergelijking met die in het geheugen, is dat databasegegevens niet verloren gaan nadat de toepassing opnieuw is opgestart.

We kunnen de opslagmodus configureren via de spring.datasource.url eigendom in ons application.properties het dossier. Op deze manier kunnen we de H2-database instellen om de in-memory-benadering te gebruiken door de mem parameter in de gegevensbron-URL, gevolgd door databasenaam:

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

Als we de bestandsgebaseerde persistentiemodus gebruiken, stellen we een van de beschikbare opties voor schijflocaties in in plaats van de mem parameter. In de volgende sectie bespreken we wat deze opties zijn.

Laten we eens kijken welke bestanden de H2-database maakt:

  • demodb.mv.db - in tegenstelling tot de andere, wordt dit bestand altijd gemaakt en bevat het gegevens, transactielogboek en indexen
  • demodb.lock.db - het is een databasevergrendelingsbestand en H2 herschept het wanneer de database in gebruik is
  • demodb.trace.db - dit bestand bevat trace-informatie
  • demodb.123.temp.db - gebruikt voor het verwerken van blobs of enorme resultatensets
  • demodb.newFile - H2 gebruikt dit bestand voor het comprimeren van databases en het bevat een nieuw databasearchiefbestand
  • demodb.oldFile - H2 gebruikt dit bestand ook voor het comprimeren van databases en het bevat een oud databasearchiefbestand

4. H2's Embedded Database-opslaglocatie

H2 is erg flexibel wat betreft de opslag van databasebestanden. Op dit moment kunnen we de opslagmap configureren om:

  • directory op schijf
  • huidige gebruikersdirectory
  • huidige projectmap of werkmap

4.1. Directory op schijf

We kunnen een specifieke directorylocatie instellen waar onze databasebestanden worden opgeslagen:

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

Merk op dat in deze verbindingsreeks het laatste stuk verwijst naar de databasenaam. Zelfs als we het bestandzoekwoord missen in deze verbindings-URL van de gegevensbron, zal H2 het beheren en bestanden maken op de opgegeven locatie.

4.2. Huidige gebruikerslijst

Als we databasebestanden in de huidige gebruikersdirectory willen opslaan, gebruiken we de gegevensbron-URL die een tilde bevat (~) na de het dossier trefwoord:

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

In Windows-systemen is deze map bijvoorbeeld C: / Gebruikers /.

Om databasebestanden op te slaan in de submap van de huidige gebruikersmap:

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

Let erop dat als de submap niet bestaat, wordt deze automatisch aangemaakt.

4.3. Huidige werkdirectory

De huidige werkmap is er een waar de toepassing wordt gestart, en er wordt naar verwezen als een punt (.) In de gegevensbron-URL. Als we daar databasebestanden willen, zullen we deze als volgt configureren:

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

Om databasebestanden op te slaan in de submap van de huidige werkmap:

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

Merk op dat als de submap niet bestaat, deze automatisch wordt aangemaakt.

5. Conclusie

In deze korte tutorial hebben we enkele aspecten van de H2-database besproken en laten zien waar de ingesloten database van H2 de gegevens opslaat. We hebben ook geleerd hoe we de locatie van de databasebestanden kunnen configureren.

Het volledige codevoorbeeld is beschikbaar op GitHub.