Spring Boot 2 H2

Remember an in-memory database is created/initialized when an application starts up; and destroyed when the application shuts down.

H2 Configuration Options

Simple configuration

application.properties

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

Please note by default, Spring Boot configures the in-memory database connection with the username 'sa' and an empty password ' '.

Configure data persistence

# temporary data storage
spring.datasource.url = jdbc:h2:mem:testdb
# temporary data storage
spring.datasource.url = jdbc:h2:file:/data/sample
spring.datasource.url = jdbc:h2:file:C:/data/sample (Windows only)

Create schema and insert data on initialization

  • schema.sql – To initialize the schema ie.create tables and dependencies.

  • data.sql – To insert default data rows.

H2 Console

Enable H2 console

application.properties

# Enabling H2 Console
spring.h2.console.enabled=true
# Custom H2 Console URL
spring.h2.console.path=/h2

Accessing H2 console

  • http://localhost:18090/h2

  • Saved Settings: Generic H2 (Server)

  • JDBC URL: jdbc:h2:file:D:/code/spring-boot2

Other configuration options

We can enable/disable the database trace logs and we can enable/disable the remote access of H2 console.

# Whether to enable trace output.
spring.h2.console.settings.trace=false
# Whether to enable remote access.
spring.h2.console.settings.web-allow-others=false

References