Saltar al contenido principal
Spring Boot
Formación a medida Nivel medio certificado-spring-data-jpa

Spring Data JPA

Spring Boot ·Backend

Curso para dominar la capa de persistencia con Spring Data JPA e Hibernate sobre Spring Boot y bases de datos relacionales. Trabajas entidades y relaciones, repositorios, consultas derivadas y con JPQL, proyecciones, filtros dinámicos, paginación, auditoría, transacciones y testing con bases de datos reales en contenedores. Al terminar diseñas modelos de datos robustos y evitas problemas de rendimiento típicos en backends empresariales.

Evidencias FUNDAE Activación guiada Evaluación con IA Sin permanencia

¿Prefieres verlo en directo? Agenda una demo sin compromiso.

Formación corporativa: este curso se activa bajo pedido para tu organización. Adaptamos temario, calendario y modalidad (teleformación, aula virtual o mixto).

Contenido del curso

Estándar de facto del backend Java empresarial.

20 módulos 152 lecciones 25 ejercicios evaluados por IA 13 tests
  • Introducción a Spring Boot Lección
  • Crear proyecto con Spring Initializr Lección
  • Crear proyecto desde Visual Studio Code Lección
  • Crear proyecto con IntelliJ IDEA Lección
  • Spring Boot Starters Lección
  • Test de introducción a Spring Boot Test

Detalles del curso

Spring Data JPA representa una de las soluciones más elegantes y eficientes para el manejo de persistencia de datos en aplicaciones Java modernas. Esta tecnología combina la potencia del estándar Java Persistence API (JPA) con la simplicidad y productividad que caracteriza al ecosistema Spring Framework.

¿Qué es JPA y por qué es importante?

Java Persistence API (JPA) es una especificación estándar de Java que define cómo gestionar datos relacionales en aplicaciones Java mediante el paradigma de mapeo objeto-relacional (ORM). JPA actúa como una capa de abstracción que permite trabajar con bases de datos utilizando objetos Java en lugar de escribir consultas SQL directamente.

La especificación JPA define un conjunto de anotaciones, interfaces y comportamientos que permiten:

  • Mapear clases Java a tablas de base de datos
  • Gestionar relaciones entre entidades de forma declarativa
  • Realizar consultas utilizando JPQL (Java Persistence Query Language)
  • Controlar transacciones y el ciclo de vida de las entidades
@Entity
@Table(name = "usuarios")
public class Usuario {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name = "nombre", nullable = false)
    private String nombre;
    
    @Column(name = "email", unique = true)
    private String email;
    
    // Constructores, getters y setters
}

Spring Data JPA: Simplificando la persistencia

Spring Data JPA es un proyecto del ecosistema Spring que proporciona una implementación de alto nivel sobre JPA. Su objetivo principal es reducir significativamente el código repetitivo que tradicionalmente se requiere para implementar capas de acceso a datos.

Características principales

Spring Data JPA ofrece funcionalidades que transforman la manera de trabajar con datos:

  • Repositorios automáticos: Genera implementaciones completas de repositorios basándose únicamente en interfaces
  • Métodos derivados: Crea consultas automáticamente a partir del nombre de los métodos
  • Consultas personalizadas: Permite definir consultas JPQL o SQL nativas mediante anotaciones
  • Paginación y ordenación: Incluye soporte nativo para manejar grandes volúmenes de datos
  • Auditoría: Rastrea automáticamente cuándo y quién modifica las entidades
public interface UsuarioRepository extends JpaRepository<Usuario, Long> {
    // Spring Data JPA genera automáticamente la implementación
    List<Usuario> findByNombreContaining(String nombre);
    
    @Query("SELECT u FROM Usuario u WHERE u.email = ?1")
    Optional<Usuario> buscarPorEmail(String email);
    
    @Query(value = "SELECT * FROM usuarios WHERE activo = true", nativeQuery = true)
    List<Usuario> usuariosActivos();
}

Configuración de bases de datos

Una de las fortalezas de Spring Data JPA es su flexibilidad para trabajar con diferentes sistemas de bases de datos. La configuración se adapta fácilmente a las necesidades específicas de cada proyecto y entorno.

Base de datos H2

H2 es una base de datos en memoria ideal para desarrollo, pruebas y prototipado rápido. Su configuración es mínima y permite comenzar a trabajar inmediatamente sin instalaciones adicionales.

# Configuración H2 en application.properties
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.h2.console.enabled=true
spring.jpa.show-sql=true

Bases de datos de producción

Para entornos de producción, Spring Data JPA se integra perfectamente con MySQL y PostgreSQL, dos de los sistemas de gestión de bases de datos más utilizados en la industria.

MySQL ofrece un rendimiento excelente y una amplia adopción, mientras que PostgreSQL destaca por su robustez y características avanzadas como soporte para JSON nativo y consultas complejas.

# Configuración MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/miapp
spring.datasource.username=usuario
spring.datasource.password=contraseña
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

# Configuración PostgreSQL  
spring.datasource.url=jdbc:postgresql://localhost:5432/miapp
spring.datasource.username=usuario
spring.datasource.password=contraseña
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect

Entidades JPA: Modelando el dominio

Las entidades JPA son clases Java que representan tablas en la base de datos. Cada instancia de una entidad corresponde a una fila en la tabla correspondiente. El diseño de entidades requiere comprender tanto el modelo de datos como las relaciones entre diferentes conceptos del dominio.

Definición de entidades básicas

Una entidad se define utilizando la anotación @Entity y debe incluir un identificador único marcado con @Id. Las propiedades de la clase se mapean automáticamente a columnas de la tabla.

@Entity
public class Producto {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String nombre;
    private BigDecimal precio;
    private Integer stock;
    
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaCreacion;
}

Asociaciones entre entidades

Las asociaciones JPA modelan las relaciones entre diferentes entidades, reflejando las relaciones de clave foránea en el modelo relacional. Spring Data JPA soporta todos los tipos de asociaciones:

  • @OneToOne: Relación uno a uno
  • @OneToMany: Relación uno a muchos
  • @ManyToOne: Relación muchos a uno
  • @ManyToMany: Relación muchos a muchos
@Entity
public class Pedido {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cliente_id")
    private Cliente cliente;
    
    @OneToMany(mappedBy = "pedido", cascade = CascadeType.ALL)
    private List<LineaPedido> lineas = new ArrayList<>();
}

Repositorios Spring Data

Los repositorios constituyen el corazón de Spring Data JPA. Proporcionan una abstracción de alto nivel para realizar operaciones de persistencia sin necesidad de implementar código repetitivo.

Jerarquía de repositorios

Spring Data JPA ofrece diferentes niveles de funcionalidad a través de sus interfaces de repositorio:

  • Repository: Interfaz marcadora básica
  • CrudRepository: Operaciones CRUD básicas
  • PagingAndSortingRepository: Añade paginación y ordenación
  • JpaRepository: Funcionalidad completa específica de JPA
@Repository
public interface ProductoRepository extends JpaRepository<Producto, Long> {
    // Hereda automáticamente métodos como:
    // save(), findById(), findAll(), delete(), etc.
}

Métodos derivados

Una característica distintiva de Spring Data JPA son los métodos derivados, que generan consultas automáticamente basándose en el nombre del método. Esta funcionalidad elimina la necesidad de escribir implementaciones para consultas comunes.

public interface ProductoRepository extends JpaRepository<Producto, Long> {
    // Buscar por nombre exacto
    List<Producto> findByNombre(String nombre);
    
    // Buscar por rango de precios
    List<Producto> findByPrecioBetween(BigDecimal min, BigDecimal max);
    
    // Buscar productos con stock mayor a un valor
    List<Producto> findByStockGreaterThan(Integer cantidad);
    
    // Combinar múltiples criterios
    List<Producto> findByNombreContainingAndPrecioLessThan(String nombre, BigDecimal precio);
}

Otros cursos de Spring Boot

Formación a medida ·Avanzado

Java Spring Microservicios

Curso profesional de microservicios con Java y Spring Boot para descomponer monolitos o diseñar plataformas distribuidas desde cero. Trabajas API Gateway, configuración centralizada, descubrimiento de servicios, resiliencia, mensajería asíncrona con Kafka, observabilidad y despliegue en Kubernetes. Al terminar lideras la transformación de tu backend a una arquitectura distribuida lista para banca, telco, fintech y sector público.

Formación a medida ·Avanzado

Microservicios con Spring Cloud

Curso para diseñar y operar arquitecturas de microservicios con Spring Cloud sobre Spring Boot y Java. Trabajas descubrimiento de servicios, configuración centralizada, API Gateway con filtros y autenticación, resiliencia, balanceo, mensajería asíncrona, patrón Saga, observabilidad distribuida y despliegue en Kubernetes. Al terminar lideras la descomposición de un monolito o el diseño de una plataforma distribuida nueva para proyectos empresariales.

Formación a medida ·Nivel medio

Spring Security esencial

Curso para securizar aplicaciones Spring Boot con Spring Security, la primera capa de ciberseguridad de cualquier backend Java empresarial. Trabajas arquitectura de filtros, autenticación contra base de datos, hashing de contraseñas, autorización por rol, protección de APIs REST con JWT, seguridad a nivel de método, CSRF, CORS, cabeceras seguras y testing. Al terminar entregas aplicaciones protegidas y listas para auditorías de seguridad.

Formación a medida ·Avanzado

Spring WebFlux reactivo

Curso para construir backends reactivos de alta concurrencia con Spring WebFlux sobre Spring Boot y Java. Trabajas el modelo no bloqueante con Project Reactor, controladores con Mono y Flux, persistencia reactiva sobre PostgreSQL, consumo de APIs externas, eventos en streaming, WebSockets, seguridad reactiva, gestión de errores y testing. Al terminar entregas servicios listos para fintech, trading, telemetría e IoT con miles de conexiones concurrentes.

Llave en mano para empresas

¿Formación para tu equipo en esta tecnología?

Tú nos dices a quién formar y nosotros configuramos la plataforma con tu marca, damos de alta a tu gente, evaluamos las entregas con IA y te entregamos los certificados y los informes técnicos para tu gestor FUNDAE. Catálogo amplio con teleformación, aula virtual o mixto. Sin permanencia, sin coste de setup.

¿Prefieres verlo en directo? Agenda una demo.

Preguntas frecuentes

¿Spring Data JPA es bonificable por FUNDAE para mi empresa?
Puede ser bonificable cuando la acción cumple los requisitos aplicables. La plataforma aporta evidencias técnicas: seguimiento de tiempos, registro de conexiones, foros, encuestas y certificados para que tu entidad organizadora o gestoría revise la documentación.
¿En qué modalidades se imparte Spring Data JPA?
En tres modalidades: teleformación (online asíncrona), aula virtual privada en directo y mixta. Adaptamos temario, calendario y modalidad al equipo.
¿Se adapta Spring Data JPA al nivel de mi equipo?
Sí. Adaptamos temario, calendario y modalidad al nivel y al stack del equipo, con ejercicios evaluados por IA y certificado verificable.
¿Cuánto tarda en activarse para mi empresa?
La activación corporativa estándar es rápida, sin coste de setup ni permanencia.