Sto cercando di rendere persistente un DB in memoria H2 in un file con Spring Boot per riutilizzare i dati lì dentro.
Sfortunatamente, il modo per specificare l'URL dell'origine dati come
spring.datasource.url = jdbc:h2:file:~/WeatherDB;FILE_LOCK=FS
(proprietà.applicazioni complete)
non funziona per me. Non riesco a trovare un file generato da H2 da nessuna parte sul mio disco rigido (inoltre, i dati salvati non sono disponibili dopo aver riavviato il server).
Per visualizzarlo, ho creato un progetto di esempio che può essere trovato su bitbucket.
Con ciò, non sembra fare differenza se l'applicazione viene eseguita da un IDE con gradle run
o dopo averlo confezionato dal barattolo.
Quale opzione di configurazione è necessaria per persistere e riutilizzare H2 DB?
Aggiornare:
Mi sono reso conto che esiste un endpoint dell'attuatore per le opzioni di configurazione su http://localhost:8080/configprops
Questo mostra
"spring.datasource.CONFIGURATION_PROPERTIES": {
"prefix": "spring.datasource",
"properties": {
"schema": null,
"data": null,
"xa": {
"dataSourceClassName": null,
"properties": { }
},
"separator": ";",
"url": "jdbc:h2:file:~/WeatherDB",
"platform": "all",
"continueOnError": false,
"jndiName": null,
"sqlScriptEncoding": null,
"password": "******",
"driverClassName": "org.h2.Driver",
"initialize": true,
"username": "sa"
}
},
Ma non riesco a trovare un file WeatherDB
sul mio disco rigido né sono disponibili dati dopo aver riavviato il server.
Ogni suggerimento è ben accetto ;-)
risposte:
3 per risposta № 1Il tuo application.properties
il file non viene prelevato. Sostituire
compile "org.springframework.data:spring-data-jpa:1.7.2.RELEASE"
compile "org.hibernate:hibernate-entitymanager:4.3.8.Final"
con
compile "org.springframework.boot:spring-boot-starter-data-jpa"
0 per risposta № 2
La tabella viene eliminata a causa della migrazione dello schema che l'ha impostata per l'aggiornamento risolta per me.
application.properties
spring.jpa.hibernate.ddl-auto=update