En este tema, aprenderás cómo configurar fuentes de datos en una aplicación Spring Boot. La configuración de fuentes de datos es esencial para conectar tu aplicación con una base de datos y realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar).
Objetivos
- Entender qué es una fuente de datos.
- Configurar una fuente de datos en Spring Boot.
- Conectar tu aplicación Spring Boot a una base de datos relacional.
- Probar la conexión a la base de datos.
¿Qué es una Fuente de Datos?
Una fuente de datos (DataSource) es un objeto que proporciona una conexión a una base de datos. En Spring Boot, puedes configurar una fuente de datos para conectarte a bases de datos como MySQL, PostgreSQL, H2, entre otras.
Configuración de una Fuente de Datos en Spring Boot
Paso 1: Añadir Dependencias
Primero, necesitas añadir las dependencias necesarias en tu archivo pom.xml
(para Maven) o build.gradle
(para Gradle). Aquí te mostramos cómo hacerlo con Maven:
<dependencies> <!-- Dependencia de Spring Data JPA --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- Dependencia del controlador de la base de datos MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- Dependencia de H2 para pruebas --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies>
Paso 2: Configurar las Propiedades de la Base de Datos
Spring Boot utiliza el archivo application.properties
o application.yml
para configurar las propiedades de la aplicación. Aquí te mostramos cómo configurar una fuente de datos en application.properties
:
# Configuración de la fuente de datos para MySQL spring.datasource.url=jdbc:mysql://localhost:3306/mi_base_de_datos spring.datasource.username=mi_usuario spring.datasource.password=mi_contraseña spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # Configuración de JPA spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
Paso 3: Crear una Clase de Configuración (Opcional)
En la mayoría de los casos, Spring Boot autoconfigura la fuente de datos automáticamente. Sin embargo, si necesitas una configuración más personalizada, puedes crear una clase de configuración:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.boot.jdbc.DataSourceBuilder; import javax.sql.DataSource; @Configuration public class DataSourceConfig { @Bean public DataSource getDataSource() { DataSourceBuilder<?> dataSourceBuilder = DataSourceBuilder.create(); dataSourceBuilder.url("jdbc:mysql://localhost:3306/mi_base_de_datos"); dataSourceBuilder.username("mi_usuario"); dataSourceBuilder.password("mi_contraseña"); dataSourceBuilder.driverClassName("com.mysql.cj.jdbc.Driver"); return dataSourceBuilder.build(); } }
Paso 4: Probar la Conexión a la Base de Datos
Para asegurarte de que tu configuración es correcta, puedes crear una entidad JPA y un repositorio para realizar una operación simple de prueba.
Crear una Entidad JPA
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Usuario { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String nombre; private String email; // Getters y Setters }
Crear un Repositorio
import org.springframework.data.jpa.repository.JpaRepository; public interface UsuarioRepository extends JpaRepository<Usuario, Long> { }
Crear un Componente de Prueba
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class DataLoader implements CommandLineRunner { @Autowired private UsuarioRepository usuarioRepository; @Override public void run(String... args) throws Exception { Usuario usuario = new Usuario(); usuario.setNombre("Juan Perez"); usuario.setEmail("[email protected]"); usuarioRepository.save(usuario); System.out.println("Usuario guardado: " + usuario); } }
Ejercicio Práctico
Ejercicio: Configurar una Fuente de Datos para PostgreSQL
- Añade las dependencias necesarias para PostgreSQL en tu archivo
pom.xml
. - Configura las propiedades de la base de datos en
application.properties
. - Crea una entidad JPA y un repositorio.
- Crea un componente de prueba para guardar y recuperar datos de la base de datos.
Solución:
- Dependencias en
pom.xml
:
<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency>
- Propiedades en
application.properties
:
spring.datasource.url=jdbc:postgresql://localhost:5432/mi_base_de_datos spring.datasource.username=mi_usuario spring.datasource.password=mi_contraseña spring.datasource.driver-class-name=org.postgresql.Driver spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
-
Entidad JPA y Repositorio: (Igual que en el ejemplo anterior)
-
Componente de Prueba: (Igual que en el ejemplo anterior)
Conclusión
En esta sección, has aprendido cómo configurar una fuente de datos en Spring Boot para conectarte a una base de datos relacional. Has visto cómo añadir dependencias, configurar propiedades y probar la conexión a la base de datos. Con esta base, estás listo para avanzar y aprender más sobre cómo interactuar con bases de datos en Spring Boot.
En el próximo tema, aprenderás cómo crear entidades JPA y cómo utilizarlas para realizar operaciones CRUD en tu base de datos.
Curso de Spring Boot
Módulo 1: Introducción a Spring Boot
- ¿Qué es Spring Boot?
- Configuración de tu Entorno de Desarrollo
- Creando tu Primera Aplicación Spring Boot
- Entendiendo la Estructura del Proyecto Spring Boot
Módulo 2: Conceptos Básicos de Spring Boot
- Anotaciones de Spring Boot
- Inyección de Dependencias en Spring Boot
- Configuración de Spring Boot
- Propiedades de Spring Boot
Módulo 3: Construyendo Servicios Web RESTful
- Introducción a los Servicios Web RESTful
- Creando Controladores REST
- Manejo de Métodos HTTP
- Manejo de Excepciones en REST
Módulo 4: Acceso a Datos con Spring Boot
- Introducción a Spring Data JPA
- Configuración de Fuentes de Datos
- Creación de Entidades JPA
- Uso de Repositorios de Spring Data
- Métodos de Consulta en Spring Data JPA
Módulo 5: Seguridad en Spring Boot
- Introducción a Spring Security
- Configuración de Spring Security
- Autenticación y Autorización de Usuarios
- Implementación de Autenticación JWT
Módulo 6: Pruebas en Spring Boot
- Introducción a las Pruebas
- Pruebas Unitarias con JUnit
- Pruebas de Integración
- Simulación con Mockito
Módulo 7: Funciones Avanzadas de Spring Boot
Módulo 8: Despliegue de Aplicaciones Spring Boot
Módulo 9: Rendimiento y Monitoreo
- Ajuste de Rendimiento
- Monitoreo con Spring Boot Actuator
- Uso de Prometheus y Grafana
- Gestión de Registros y Logs