Spring Boot

SpringBoot

Tutorial SpringBoot: Configuración base de datos MySQL

Aprende a configurar MySQL en Spring Boot con propiedades, Hibernate y pool de conexiones para aplicaciones robustas y eficientes.

Aprende SpringBoot y certifícate

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=update permite que Hibernate actualice automáticamente el esquema de la base de datos según las entidades definidas
  • spring.jpa.show-sql=true habilita la visualización de las consultas SQL generadas en la consola
  • spring.jpa.properties.hibernate.format_sql=true formatea 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.

Aprende SpringBoot online

Otras lecciones de SpringBoot

Accede a todas las lecciones de SpringBoot y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción A Spring Boot

Spring Boot

Introducción Y Entorno

Spring Boot Starters

Spring Boot

Introducción Y Entorno

Inyección De Dependencias

Spring Boot

Introducción Y Entorno

Crear Proyecto Con Spring Initializr

Spring Boot

Introducción Y Entorno

Crear Proyecto Desde Visual Studio Code

Spring Boot

Introducción Y Entorno

Controladores Spring Mvc

Spring Boot

Spring Mvc Con Thymeleaf

Vista En Spring Mvc Con Thymeleaf

Spring Boot

Spring Mvc Con Thymeleaf

Controladores Spring Rest

Spring Boot

Spring Mvc Con Thymeleaf

Open Api Y Cómo Agregarlo En Spring Boot

Spring Boot

Spring Mvc Con Thymeleaf

Servicios En Spring

Spring Boot

Spring Mvc Con Thymeleaf

Clientes Resttemplate Y Restclient

Spring Boot

Spring Mvc Con Thymeleaf

Rxjava En Spring Web

Spring Boot

Spring Mvc Con Thymeleaf

Métodos Post En Controladores Mvc

Spring Boot

Spring Mvc Con Thymeleaf

Métodos Get En Controladores Mvc

Spring Boot

Spring Mvc Con Thymeleaf

Formularios En Spring Mvc

Spring Boot

Spring Mvc Con Thymeleaf

Crear Proyecto Con Intellij Idea

Spring Boot

Spring Mvc Con Thymeleaf

Introducción A Los Modelos Mvc

Spring Boot

Spring Mvc Con Thymeleaf

Layouts Y Fragmentos En Thymeleaf

Spring Boot

Spring Mvc Con Thymeleaf

Estilización Con Bootstrap Css

Spring Boot

Spring Mvc Con Thymeleaf

Gestión De Errores Controlleradvice

Spring Boot

Spring Mvc Con Thymeleaf

Estilización Con Tailwind Css

Spring Boot

Spring Mvc Con Thymeleaf

Introducción A Controladores Rest

Spring Boot

Spring Rest

Métodos Get En Controladores Rest

Spring Boot

Spring Rest

Métodos Post En Controladores Rest

Spring Boot

Spring Rest

Métodos Delete En Controladores Rest

Spring Boot

Spring Rest

Métodos Put Y Patch En Controladores Rest

Spring Boot

Spring Rest

Gestión De Errores Restcontrolleradvice

Spring Boot

Spring Rest

Creación De Entidades Jpa

Spring Boot

Spring Data Jpa

Asociaciones De Entidades Jpa

Spring Boot

Spring Data Jpa

Repositorios Spring Data

Spring Boot

Spring Data Jpa

Métodos Find En Repositorios

Spring Boot

Spring Data Jpa

Inserción De Datos

Spring Boot

Spring Data Jpa

Actualizar Datos De Base De Datos

Spring Boot

Spring Data Jpa

Borrar Datos De Base De Datos

Spring Boot

Spring Data Jpa

Consultas Jpql Con @Query En Spring Data Jpa

Spring Boot

Spring Data Jpa

Api Query By Example (Qbe)

Spring Boot

Spring Data Jpa

Api Specification

Spring Boot

Spring Data Jpa

Repositorios Reactivos

Spring Boot

Spring Data Jpa

Configuración Base De Datos Postgresql

Spring Boot

Spring Data Jpa

Configuración Base De Datos Mysql

Spring Boot

Spring Data Jpa

Introducción A Jpa Y Spring Data Jpa

Spring Boot

Spring Data Jpa

Configuración Base De Datos H2

Spring Boot

Spring Data Jpa

Testing Unitario De Componentes Y Servicios

Spring Boot

Testing Con Spring Test

Testing De Repositorios Spring Data Jpa

Spring Boot

Testing Con Spring Test

Testing Controladores Spring Mvc Con Thymeleaf

Spring Boot

Testing Con Spring Test

Testing Controladores Rest Con Json

Spring Boot

Testing Con Spring Test

Testing De Aplicaciones Reactivas Webflux

Spring Boot

Testing Con Spring Test

Testing De Seguridad Spring Security

Spring Boot

Testing Con Spring Test

Testing Con Apache Kafka

Spring Boot

Testing Con Spring Test

Introducción Al Testing

Spring Boot

Testing Con Spring Test

Introducción A Spring Security

Spring Boot

Seguridad Con Spring Security

Seguridad Basada En Formulario

Spring Boot

Seguridad Con Spring Security

Registro De Usuarios En Api Rest

Spring Boot

Seguridad Con Spring Security

Login De Usuarios En Api Rest

Spring Boot

Seguridad Con Spring Security

Validación Jwt En Api Rest

Spring Boot

Seguridad Con Spring Security

Autenticación Jwt Completa En Api Rest

Spring Boot

Seguridad Con Spring Security

Seguridad Jwt En Api Rest Reactiva Spring Webflux

Spring Boot

Seguridad Con Spring Security

Autenticación Y Autorización Con Anotaciones

Spring Boot

Seguridad Con Spring Security

Fundamentos De Autenticación Oauth

Spring Boot

Seguridad Con Spring Security

Autenticación Oauth Con Github

Spring Boot

Seguridad Con Spring Security

Testing Con Spring Security Test

Spring Boot

Seguridad Con Spring Security

Autenticación Oauth En Api Rest

Spring Boot

Seguridad Con Spring Security

Introducción A Spring Webflux

Spring Boot

Reactividad Webflux

Spring Data R2dbc

Spring Boot

Reactividad Webflux

Controlador Reactivo Basado En Anotaciones

Spring Boot

Reactividad Webflux

Controlador Reactivo Basado En Funciones

Spring Boot

Reactividad Webflux

Operadores Reactivos Básicos

Spring Boot

Reactividad Webflux

Operadores Reactivos Avanzados

Spring Boot

Reactividad Webflux

Cliente Reactivo Webclient

Spring Boot

Reactividad Webflux

Introducción E Instalación De Apache Kafka

Spring Boot

Mensajería Asíncrona

Crear Proyecto Con Apache Kafka

Spring Boot

Mensajería Asíncrona

Creación De Producers

Spring Boot

Mensajería Asíncrona

Creación De Consumers

Spring Boot

Mensajería Asíncrona

Kafka Streams En Spring Boot

Spring Boot

Mensajería Asíncrona

Integración Con Angular

Spring Boot

Integración Frontend

Integración Con React

Spring Boot

Integración Frontend

Integración Con Vue

Spring Boot

Integración Frontend

Accede GRATIS a SpringBoot y certifícate

Ejercicios de programación de SpringBoot

Evalúa tus conocimientos de esta lección Configuración base de datos MySQL con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

En esta lección

Objetivos de aprendizaje 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.