Esercitazioni di Spring Boot 8: H2 un database in-memory

In questa nuova esercitazione vedremo come utilizzare il database in-memory H2.

Con questa soluzione, particolarmente utile per scopi didattici e in fase di sviluppo, possiamo lavorare con un database vero e proprio senza preoccuparci di installazioni e di ricorrere a container Docker o macchine virtuali. Il tutto corredato da una comoda console di gestione.

Mettiamoci all’opera per modificare il progetto relativo ai calciatori.

Prima di tutto aggiungiamo la dipendenza richiesta all’interno del file pom.xml

<!-- h2 database dependency. -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
Quindi dobbiamo modificare le impostazioni del datasource nel file application.properties.
Commentiamo per il momento la parte relativa a MySql che abbiamo utilizzato in precedenza.
Vedremo in seguito come gestire il tutto in maniera più elegante con i profili di Spring.
Le proprietà da aggiungere sono le seguenti

spring.datasource.url=jdbc:h2:mem:players
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
### Enable the console for the h2 database ###
spring.h2.console.enabled=true

In particolare osserviamo che l’utente del database è il classico sa privo di password, che possiamo modificare a nostro piacimento.
Il nome del database è “players” riportato in coda alla url del datasource.

Per la parte di inizializzazione dei dati creiamo all’interno di un nuovo package  net.emmecilab.players.components una classe H2DataLoader che implementa l’interfaccia  CommandLineRunner. Tale classe va annotata con @Component affinchè Spring possa creare un bean.

Il CommandRunner richiede l’overriding del metodo run() all’interno del quale andremo ad inserire le istruzioni per l’aggiunta dei dati.

Per prima cosa effettuiamo l’autowiring del repository con

@Autowired
private PlayerRepository playerRepository;

quindi salviamo una serie di dati di test con

playerRepository.save(new Player("Francesco", "Totti", "Roma", "midfielder"));
playerRepository.save(new Player("Alessandro", "Del Piero", "Juventus", "forward"));
playerRepository.save(new Player("Mauro", "Icardi", "Juventus", "forward"));

Dopo aver avviato l’applicazione

h2-start

possiamo accedere alla console di H2 attraverso l’url http://localhost:8080/h2-console con le credenziali impostate in precedenza e che popolano i campi del form

h2-console

Notiamo la presenza del database players che possiamo interrogare scrivendo delle query SQL

h2-list

Per il resto nulla è cambiato quindi le API sono accessibili come già visto in precedenza.

Come sempre il codice è disponibile su GitHub.

ESERCITAZIONI DI SPRING BOOT

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Utilizzando il sito, accetti l'invio dei cookies da parte nostra. Maggiori informazioni

Questo sito utilizza i cookies per fornire la migliore esperienza di navigazione possibile. Continuando ad utilizzarlo senza modificare le impostazioni o cliccando su "Accetta" acconsenti al loro utilizzo.

Chiudi