Spring Boot con database H2

1. Panoramica

In questo tutorial, esploreremo l'utilizzo di H2 con Spring Boot. Proprio come altri database, c'è il pieno supporto intrinseco per questo nell'ecosistema Spring Boot.

2. Dipendenze

Cominciamo con le dipendenze h2 e spring-boot-starter-data-jpa :

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

3. Configurazione del database

Per impostazione predefinita, Spring Boot configura l'applicazione per connettersi a un archivio in memoria con il nome utente sa e una password vuota .

Tuttavia, possiamo modificare questi parametri aggiungendo le seguenti proprietà al file application.properties :

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

Per impostazione predefinita, il database in memoria è volatile e i dati andranno persi quando si riavvia l'applicazione.

Possiamo cambiare questo comportamento utilizzando l'archiviazione basata su file. Per fare questo dobbiamo aggiornare spring.datasource.url :

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

Il database può funzionare anche in altre modalità.

4. Operazioni di database

L'esecuzione di operazioni CRUD con H2 all'interno di Spring Boot è la stessa che con altri database SQL e le nostre esercitazioni nella serie Spring Persistence fanno un buon lavoro nel coprirlo.

Nel frattempo, aggiungiamo un file data.sql in src / main / resources :

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 raccoglierà automaticamente data.sql e lo eseguirà sul nostro database H2 configurato durante l'avvio dell'applicazione. Questo è un buon modo per eseguire il seeding del database per test o altri scopi.

5. Accesso alla console H2

Il database H2 ha una console GUI incorporata per esplorare i contenuti di un database ed eseguire query SQL. Per impostazione predefinita, la console H2 non è abilitata in Spring.

Per abilitarlo, dobbiamo aggiungere la seguente proprietà a application.properties :

spring.h2.console.enabled=true

Quindi, dopo aver avviato l'applicazione, possiamo navigare su // localhost: 8080 / h2-console , che ci presenterà una pagina di accesso.

Nella pagina di accesso, forniremo le stesse credenziali che abbiamo utilizzato in application.properties :

Una volta che ci connettiamo, vedremo una pagina web completa che elenca tutte le tabelle sul lato sinistro della pagina e una casella di testo per l'esecuzione di query SQL:

La console Web ha una funzione di completamento automatico che suggerisce parole chiave SQL. Il fatto che la console sia leggera lo rende utile per ispezionare visivamente il database o eseguire direttamente SQL non elaborato.

Inoltre, possiamo configurare ulteriormente la console specificando le seguenti proprietà in application.properties del progetto con i nostri valori desiderati:

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

Nello snippet sopra, abbiamo impostato il percorso della console su / h2-console , che è relativo all'indirizzo e alla porta della nostra applicazione in esecuzione. Pertanto, se la nostra app è in esecuzione su // localhost: 9001 , la console sarà disponibile su // localhost: 9001 / h2-console.

Inoltre, impostiamo spring.h2.console.settings.trace su false per impedire l'output della traccia e possiamo anche disabilitare l'accesso remoto impostando spring . altri h2.console.settings.web-permettere- a falso .

6. Conclusione

Il database H2 è completamente compatibile con Spring Boot. Abbiamo visto come configurarlo e come utilizzare la console H2 per gestire il nostro database in esecuzione.

Il codice sorgente completo è disponibile su GitHub.