Spring Boot con base de datos H2

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.