1. Información general
En este tutorial, exploraremos el uso de H2 con Spring Boot. Al igual que otras bases de datos, existe un soporte intrínseco completo para ella en el ecosistema Spring Boot.
2. Dependencias
Comencemos con las dependencias h2 y spring-boot-starter-data-jpa :
org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 runtime
3. Configuración de la base de datos
De forma predeterminada, Spring Boot configura la aplicación para conectarse a una tienda en memoria con el nombre de usuario sa y una contraseña vacía .
Sin embargo, podemos cambiar esos parámetros agregando las siguientes propiedades al archivo 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
Por diseño, la base de datos en memoria es volátil y los datos se perderán cuando reiniciemos la aplicación.
Podemos cambiar ese comportamiento utilizando almacenamiento basado en archivos. Para hacer esto, necesitamos actualizar spring.datasource.url :
spring.datasource.url=jdbc:h2:file:/data/demo
La base de datos también puede funcionar en otros modos.
4. Operaciones de base de datos
Llevar a cabo operaciones CRUD con H2 dentro de Spring Boot es lo mismo que con otras bases de datos SQL, y nuestros tutoriales de la serie Spring Persistence hacen un buen trabajo cubriendo esto.
Mientras tanto, agreguemos un archivo data.sql en 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 recogerá automáticamente el archivo data.sql y lo ejecutará en nuestra base de datos H2 configurada durante el inicio de la aplicación. Esta es una buena forma de sembrar la base de datos para realizar pruebas o para otros fines.
5. Acceso a la consola H2
La base de datos H2 tiene una consola GUI incorporada para examinar el contenido de una base de datos y ejecutar consultas SQL. De forma predeterminada, la consola H2 no está habilitada en Spring.
Para habilitarlo, necesitamos agregar la siguiente propiedad a application.properties :
spring.h2.console.enabled=true
Luego, después de iniciar la aplicación, podemos navegar a // localhost: 8080 / h2-console , que nos presentará una página de inicio de sesión.
En la página de inicio de sesión, proporcionaremos las mismas credenciales que usamos en application.properties :

Una vez que nos conectemos, veremos una página web completa que enumera todas las tablas en el lado izquierdo de la página y un cuadro de texto para ejecutar consultas SQL:

La consola web tiene una función de autocompletar que sugiere palabras clave SQL. El hecho de que la consola sea liviana la hace útil para inspeccionar visualmente la base de datos o ejecutar SQL sin procesar directamente.
Además, podemos configurar aún más la consola especificando las siguientes propiedades en application.properties del proyecto con nuestros valores deseados:
spring.h2.console.path=/h2-console spring.h2.console.settings.trace=false spring.h2.console.settings.web-allow-others=false
En el fragmento anterior, configuramos la ruta de la consola en / h2-console , que es relativa a la dirección y el puerto de nuestra aplicación en ejecución. Por lo tanto, si nuestra aplicación se ejecuta en // localhost: 9001 , la consola estará disponible en // localhost: 9001 / h2-console.
Además, configuramos spring.h2.console.settings.trace en false para evitar la salida de seguimiento, y también podemos deshabilitar el acceso remoto configurando spring . h2.console.settings.web-allow-others en false .
6. Conclusión
La base de datos H2 es totalmente compatible con Spring Boot. Hemos visto cómo configurarlo y cómo usar la consola H2 para administrar nuestra base de datos en ejecución.
El código fuente completo está disponible en GitHub.