Configuración base de datos MySQL
La configuración de base de datos en Spring Boot representa uno de los aspectos fundamentales para desarrollar aplicaciones que requieren persistencia de datos. MySQL, como sistema de gestión de bases de datos relacional, se integra de manera natural con Spring Data JPA, proporcionando una base sólida para el almacenamiento y recuperación de información.
Spring Boot simplifica significativamente el proceso de configuración mediante su sistema de autoconfiguración y las propiedades de aplicación. Esta aproximación permite establecer conexiones con MySQL de forma declarativa, eliminando la complejidad de configuraciones manuales tradicionales.
Dependencias necesarias
Para trabajar con MySQL en Spring Boot, necesitamos incluir las dependencias apropiadas en nuestro proyecto. El archivo pom.xml debe contener tanto Spring Data JPA como el driver de MySQL:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
La dependencia spring-boot-starter-data-jpa incluye todo lo necesario para trabajar con JPA, mientras que mysql-connector-j proporciona el driver JDBC específico para MySQL. El scope runtime indica que el driver solo se necesita durante la ejecución de la aplicación.
Configuración básica en application.properties
El archivo application.properties es el lugar principal donde definimos la configuración de conexión a MySQL. Las propiedades esenciales incluyen:
# Configuración de conexión a MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/mi_base_datos
spring.datasource.username=usuario
spring.datasource.password=contraseña
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Configuración de JPA/Hibernate
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
La URL de conexión sigue el formato estándar JDBC para MySQL, especificando el host, puerto y nombre de la base de datos. Las credenciales de acceso se configuran mediante username y password, mientras que el driver se especifica explícitamente para mayor claridad.
Configuración de Hibernate
Las propiedades relacionadas con Hibernate controlan el comportamiento del ORM:
spring.jpa.hibernate.ddl-auto=updatepermite que Hibernate actualice automáticamente el esquema de la base de datos según las entidades definidasspring.jpa.show-sql=truehabilita la visualización de las consultas SQL generadas en la consolaspring.jpa.properties.hibernate.format_sql=trueformatea las consultas SQL para mejorar su legibilidad
# Configuración adicional de Hibernate
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
El dialecto de MySQL le indica a Hibernate cómo generar SQL específico para MySQL, optimizando las consultas y aprovechando las características particulares de este sistema de base de datos.
Configuración con application.yml
Como alternativa a application.properties, podemos usar el formato YAML que ofrece una estructura más legible:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mi_base_datos
username: usuario
password: contraseña
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
format_sql: true
dialect: org.hibernate.dialect.MySQLDialect
La estructura jerárquica de YAML facilita la organización de las propiedades relacionadas, especialmente cuando la configuración se vuelve más compleja.
Configuración de pool de conexiones
Para aplicaciones en producción, es importante configurar un pool de conexiones eficiente. Spring Boot incluye HikariCP por defecto:
# Configuración del pool de conexiones HikariCP
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.connection-timeout=20000
spring.datasource.hikari.idle-timeout=300000
Estas configuraciones controlan el número de conexiones disponibles, los tiempos de espera y el comportamiento del pool, optimizando el rendimiento de la aplicación.
Verificación de la configuración
Para verificar que la configuración funciona correctamente, podemos crear una clase de configuración simple:
@Configuration
public class DatabaseConfig {
@Autowired
private DataSource dataSource;
@PostConstruct
public void verificarConexion() {
try (Connection connection = dataSource.getConnection()) {
System.out.println("Conexión exitosa a: " +
connection.getMetaData().getURL());
} catch (SQLException e) {
System.err.println("Error de conexión: " + e.getMessage());
}
}
}
Esta clase utiliza inyección de dependencias para obtener el DataSource configurado y verifica la conexión durante el inicio de la aplicación. El método verificarConexion() se ejecuta automáticamente después de la construcción del bean gracias a la anotación @PostConstruct.
Configuración por perfiles
Spring Boot permite definir configuraciones específicas para diferentes entornos mediante perfiles:
# application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mi_app_dev
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
# application-prod.properties
spring.datasource.url=jdbc:mysql://servidor-prod:3306/mi_app_prod
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.show-sql=false
Los perfiles de configuración permiten mantener configuraciones separadas para desarrollo, pruebas y producción, activándose mediante la propiedad spring.profiles.active=dev o variables de entorno.
Fuentes y referencias
Documentación oficial y recursos externos para profundizar en SpringBoot
Documentación oficial de SpringBoot
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, SpringBoot es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.
Más tutoriales de SpringBoot
Explora más contenido relacionado con SpringBoot y continúa aprendiendo con nuestros tutoriales gratuitos.
Aprendizajes de esta lección
- Comprender cómo integrar MySQL con Spring Boot mediante Spring Data JPA.
- Configurar las propiedades de conexión en application.properties y application.yml.
- Ajustar la configuración de Hibernate para optimizar el ORM con MySQL.
- Implementar y configurar un pool de conexiones eficiente con HikariCP.
- Utilizar perfiles para gestionar configuraciones específicas en distintos entornos.
Cursos que incluyen esta lección
Esta lección forma parte de los siguientes cursos estructurados con rutas de aprendizaje