Dove vengono archiviati i dati nel database incorporato di H2?

1. Introduzione

In questo articolo impareremo come configurare l'applicazione Spring Boot per utilizzare il database H2 incorporato e poi vedremo dove il database incorporato di H2 memorizza i dati.

Il database H2 è un database leggero e open source senza supporto commerciale a questo punto. Possiamo usarlo in varie modalità:

  • modalità server - per connessioni remote utilizzando JDBC o ODBC su TCP / IP
  • modalità incorporata: per connessioni locali che utilizzano JDBC
  • modalità mista: questo significa che possiamo usare H2 per connessioni sia locali che remote

H2 può essere configurato per funzionare come un database in memoria, ma può anche essere persistente, ad esempio i suoi dati verranno archiviati su disco. Ai fini di questo tutorial, lavoreremo con il database H2 in modalità incorporata con persistenza abilitata, quindi avremo dati sul disco .

2. Database H2 incorporato

Se vogliamo utilizzare il database H2, dobbiamo aggiungere le dipendenze Maven h2 e spring-boot-starter-data-jpa al nostro file pom.xml :

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

3. Modalità persistenza incorporata di H2

Abbiamo già detto che H2 potrebbe usare un file system per memorizzare i dati del database. Il più grande vantaggio di questo approccio rispetto a quello in memoria è che i dati del database non vengono persi dopo il riavvio dell'applicazione.

Siamo in grado di configurare la modalità di archiviazione tramite la proprietà spring.datasource.url nel nostro file application.properties . In questo modo, siamo in grado di impostare il database H2 per utilizzare l'approccio in memoria aggiungendo il parametro mem nell'URL dell'origine dati, seguito dal nome del database:

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

Se usiamo la modalità di persistenza basata su file, imposteremo una delle opzioni disponibili per le posizioni del disco invece del parametro mem . Nella prossima sezione, discuteremo di cosa sono queste opzioni.

Vediamo quali file crea il database H2:

  • demodb.mv.db : a differenza degli altri, questo file viene sempre creato e contiene dati, registro delle transazioni e indici
  • demodb.lock.db - è un file di blocco del database e H2 lo ricrea quando il database è in uso
  • demodb.trace.db : questo file contiene le informazioni sulla traccia
  • demodb.123.temp.db - utilizzato per la gestione di BLOB o enormi set di risultati
  • demodb.newFile - H2 utilizza questo file per la compattazione del database e contiene un nuovo file di archivio del database
  • demodb.oldFile - H2 utilizza anche questo file per la compattazione del database e contiene il vecchio file di archivio del database

4. Posizione di archiviazione del database incorporato di H2

H2 è molto flessibile per quanto riguarda l'archiviazione dei file di database. In questo momento, possiamo configurare la sua directory di archiviazione per:

  • directory su disco
  • directory utente corrente
  • directory del progetto corrente o directory di lavoro

4.1. Directory su disco

Possiamo impostare una posizione di directory specifica in cui verranno archiviati i nostri file di database:

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

Si noti che in questa stringa di connessione, l'ultimo blocco fa riferimento al nome del database . Inoltre, anche se manchiamo la parola chiave file nell'URL di connessione di questa origine dati, H2 la gestirà e creerà file nella posizione fornita.

4.2. Directory utente corrente

Nel caso in cui desideriamo memorizzare i file di database nella directory utente corrente, utilizzeremo l'URL dell'origine dati che contiene una tilde (~) dopo la parola chiave file :

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

Ad esempio, nei sistemi Windows, questa directory sarà C: / Users / .

Per memorizzare i file di database nella sottodirectory della directory utente corrente:

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

Notare che se la sottodirectory non esiste, verrà creata automaticamente .

4.3. Directory di lavoro corrente

La directory di lavoro corrente è quella in cui viene avviata l'applicazione e viene indicata come un punto (.) Nell'URL dell'origine dati. Se vogliamo file di database lì, lo configureremo come segue:

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

Per memorizzare i file di database nella sottodirectory della directory di lavoro corrente:

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

Notare che se la sottodirectory non esiste, verrà creata automaticamente.

5. conclusione

In questo breve tutorial, abbiamo discusso alcuni aspetti del database H2 e mostrato dove il database incorporato di H2 memorizza i dati. Abbiamo anche imparato a configurare la posizione dei file di database.

L'esempio di codice completo è disponibile su GitHub.