Spring Boot met H2-database

1. Overzicht

In deze zelfstudie verkennen we het gebruik van H2 met Spring Boot. Net als andere databases, is er volledige intrinsieke ondersteuning voor in het Spring Boot-ecosysteem.

2. Afhankelijkheden

Laten we beginnen met de h2 en spring-boot-starter-data-jpa afhankelijkheden:

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

3. Databaseconfiguratie

Standaard configureert Spring Boot de applicatie naar maak verbinding met een in-memory store met de gebruikersnaam sa en een leeg wachtwoord.

We kunnen die parameters echter wijzigen door de volgende eigenschappen toe te voegen aan het application.properties het dossier:

spring.datasource.url = jdbc: h2: mem: testdb spring.datasource.driverClassName = org.h2.Driver spring.datasource.username = sa spring.datasource.password = wachtwoord spring.jpa.database-platform = org.hibernate. dialect.H2Dialect

Door het ontwerp is de in-memory database vluchtig en gaan gegevens verloren wanneer we de applicatie opnieuw opstarten.

We kunnen dat gedrag veranderen door bestandsgebaseerde opslag te gebruiken. Om dit te doen, moeten we het spring.datasource.url:

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

De database kan ook in andere modi werken.

4. Databasebewerkingen

Het uitvoeren van CRUD-bewerkingen met H2 binnen Spring Boot is hetzelfde als met andere SQL-databases, en onze tutorials in de Spring Persistence-serie behandelen dit goed.

Laten we ondertussen een data.sql bestand in src / main / resources:

DROP TABLE INDIEN miljardairs BESTAAT; MAAK TABEL miljardairs (id INT AUTO_INCREMENT PRIMAIRE SLEUTEL, voornaam VARCHAR (250) NOT NULL, achternaam VARCHAR (250) NOT NULL, carrière VARCHAR (250) STANDAARD NULL); VOEG IN miljardairs (voornaam, achternaam, carrière) WAARDEN ('Aliko', 'Dangote', 'Billionaire Industrialist'), ('Bill', 'Gates', 'Billionaire Tech Entrepreneur'), ​​('Folrunsho', 'Alakija' , 'Billionaire Oil Magnate');

Spring Boot pikt automatisch het data.sql en voer het uit tegen onze geconfigureerde H2-database tijdens het opstarten van de applicatie. Dit is een goede manier om de database te seeden voor testdoeleinden of andere doeleinden.

5. Toegang tot de H2-console

H2-database heeft een ingebouwde GUI-console om door de inhoud van een database te bladeren en SQL-query's uit te voeren. Standaard is de H2-console niet ingeschakeld in de lente.

Om het in te schakelen, moeten we de volgende eigenschap toevoegen aan application.properties:

spring.h2.console.enabled = true

Nadat we de applicatie hebben gestart, kunnen we navigeren naar // localhost: 8080 / h2-console, die ons een inlogpagina zal opleveren.

Op de inlogpagina geven we dezelfde inloggegevens op die we hebben gebruikt in het application.properties:

Zodra we verbinding hebben, zien we een uitgebreide webpagina met alle tabellen aan de linkerkant van de pagina en een tekstvak voor het uitvoeren van SQL-query's:

De webconsole heeft een functie voor automatisch aanvullen die SQL-trefwoorden suggereert. Het feit dat de console licht van gewicht is, maakt het handig voor het visueel inspecteren van de database of het rechtstreeks uitvoeren van onbewerkte SQL.

Bovendien kunnen we de console verder configureren door de volgende eigenschappen in het project te specificeren application.properties met onze gewenste waarden:

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

In het bovenstaande fragment hebben we het consolepad ingesteld als / h2-console, wat relatief is aan het adres en de poort van onze actieve applicatie. Daarom, als onze app draait op // localhost: 9001, zal de console beschikbaar zijn op // localhost: 9001 / h2-console.

Verder zetten we spring.h2.console.settings.trace naar false om trace-uitvoer te voorkomen, en we kunnen externe toegang ook uitschakelen door in te stellen voorjaar.h2.console.settings.web-allow-anderen naar false.

6. Conclusie

De H2-database is volledig compatibel met Spring Boot. We hebben gezien hoe we het moeten configureren en hoe we de H2-console kunnen gebruiken voor het beheren van onze actieve database.

De volledige broncode is beschikbaar op GitHub.