Cómo configurar base de datos en memoria H2 con Spring Boot
Anuncio:
En esta ocasión vamos a ver cómo configurar una base de datos en memoria H2 con Spring Boot. Veremos en primer lugar qué es H2, para después aprender cómo configurarla en Spring y finalmente haremos una prueba de acceso a la base de datos.
H2. Una base de datos en memoria
H2 es una base de datos relacional en memoria . Esto quiere decir que cuando paramos nuestra aplicación perderemos los datos que hayamos guardado. Como podrás intuir esta base de datos es perfecta para cuando tenemos que hacer pruebas donde intervenga una base de datos. Aunque se puede configurar para persistir en disco los datos, no es su propósito, para ello, deberíamos usar bases de datos como MySQL, Oracle, PostgreSQL o Percona si hablamos de bases de datos relacionales, o por ejemplo MongoDB si deseamos una base de datos NoSQL.
Cómo configurar H2 con Spring Boot
Ya que sabes qué es y para que se usa H2, veamos como configurarla con Spring Boot.
Dependencias de Maven para H2
Estoy asumiendo que estas utilizando un proyecto Maven, si no es así, tendrás que hacer lo propio para Gradle si es el que tú estás utilizando. Dicho esto, las dependencias que debemos agregar son en primer lugar la propia de la base de datos:
< dependency >
< groupId >com.h2database < / groupId >
< artifactId >h2< / artifactId >
< / dependency >
Aquí, debemos indicar el ámbito o scope donde la queremos utilizar, puede ser test para usarla para testing, o runtine si la queremos usar como base de datos propiamente dicho para nuestra aplicación por tanto la dependencia quedaría así:
< dependency >
< groupId >com.h2database < / groupId >
< artifactId >h2< / artifactId >
< scope >test < / scope >
< / dependency >
Una vez agregada la dependencia de H2 e indicado el scope, debemos agregar la dependencia de Spring Data para que Spring haga la autoconfiguración de la base de datos y la conexión misma a la base. Esto es la magia de Spring Boot 😁. La dependencia es:
< dependency >
< groupId > org.springframework.boot < / groupId >
< artifactId > spring-boot-starter-data-jpa < / artifactId >
< / dependency >
Hasta aquí, si no necesitas especificar el nombre, usuario y password o cualquier otro parámetro de la base de datos, ya habrías terminado. Spring Boot se encarga de todo. Si por el contrario si deseas especicificar alguno de estos parámetros debes seguir con la configuración que te comento a continuación.
Configurar conexión de H2 con Spring Boot
Para configurar a nuestro gusto H2 tendremos que hacer uso de un archivo application.properties o application.yaml dependiendo de cómo tengas la configuración de tu proyecto. Y tendremos que agregar los siguientes parámetros:
spring.datasource.url: jdbc:h2:mem:midb
spring.datasource.driverClassName: org.h2.Driver
spring.datasource.username: usuario
spring.datasource.password: password
spring.jpa.database-platform: org.hibernate.dialect.H2Dialect
spring.h2.console.enabled: true
properties.hibernate.dialect: org.hibernate.dialect.H2Dialect
Algunos de los parámetros a configurar son:
- URL. Es la url de conexión de la base de datos
- username. Donde especificamos el nombre de usuario de la base de datos
- password. Donde especificamos la contraseña de acceso a la base de datos
- console. Indicamos si habilitamos la consola de H2 para acceder a la base de datos vía web. Lo veremos más adelante. Si no vamos a usar esta opción lo ideal es deshabilitarla para optimizar recursos y no tener servicios que no usamos levantados.
Habíamos comentado que podíamos configurar H2 para persistir los datos. Recuerda que éste no es el propósito de esta base de datos, pero si lo necesitas puedes hacerlo agregando este parámetro:
spring.datasource.url=jdbc:h2:file:/data/refactorizando/h2
Ahora si tenemos configurada nuestra base de datos en memoria H2 con Spring Boot.
Cómo acceder a la interfaz gráfica de H2
Una vez que hemos arrancado nuestra aplicación, podemos acceder a la interfaz web que nos ofrece H2 para poder ver nuestra base de datos. Para ello, y una vez arranda la aplicación, podremos acceder a través de la URL:
http://localhost:8080/h2-console
Y podremos ver la siguiente pantalla:
Aquí es muy importante que pongamos la URL tal como la hemos puesto en el archivo de configuración, nuestro usuario y contraseña y podremos hacer login.
Donde como puedes ver, ya ha creado las tablas que yo tengo con JPA en un proyecto de ejemplo de Spring Boot.
Conclusión sobre H2
H2 es una base de datos muy usada en Java para pruebas. También puede ser una opción recomendada para tener en base de datos algunos parámetros de configuración si prefieres tenerlos en una base de datos relacional, pero como te comentaba, las bases de datos en memoria, se suelen usar para testing o para cachear datos, aunque para esto, tenemos Redis que es una mejor opción a la hora de escalar en aplicaciones grandes.
Ya tienes configurada tu base de datos en memoria H2 con Spring Boot.
¡Espero que te haya sido de utilidad!