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

  1. Añade las dependencias necesarias para PostgreSQL en tu archivo pom.xml.
  2. Configura las propiedades de la base de datos en application.properties.
  3. Crea una entidad JPA y un repositorio.
  4. Crea un componente de prueba para guardar y recuperar datos de la base de datos.

Solución:

  1. Dependencias en pom.xml:
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>
  1. 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
  1. Entidad JPA y Repositorio: (Igual que en el ejemplo anterior)

  2. 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

Módulo 2: Conceptos Básicos de Spring Boot

Módulo 3: Construyendo Servicios Web RESTful

Módulo 4: Acceso a Datos con Spring Boot

Módulo 5: Seguridad en Spring Boot

Módulo 6: Pruebas en Spring Boot

Módulo 7: Funciones Avanzadas de Spring Boot

Módulo 8: Despliegue de Aplicaciones Spring Boot

Módulo 9: Rendimiento y Monitoreo

Módulo 10: Mejores Prácticas y Consejos

© Copyright 2024. Todos los derechos reservados