---
marp: true
theme: uncover
paginate: false
size: 16:9
backgroundColor: #0f172a
color: #e5e7eb
style: |
section {
font-size: 2em;
}
---
# Spring Data
### Capa de persistencia relacional
##### Daniel García Costa
###### 2026
---
## ¿Que vamos a ver?
- **Contexto y arquitectura del sistema**
- **Modelo relacional vs modelo de dominio**
- **Consultas en Spring Data**
- Métodos de abstracción
- JPQL
- SQL nativo
- **Proyecciones, agregados y rankings**
- **Paginación y filtrado con `Pageable`**
- **Optimizaciones**
---
## Contexto
Simulación de un juego MMO (multijugador masivo en línea) multimundo.
- **Servidor Master (coordinador)**
- Recibe eventos de los Shard, consulta estados, jugadores, rankings, etc.
- **Servidor Shard (mundo)**
- Aloja jugadores
- Contiene la dinámica del juego
- Reenvía los eventos al Master
---
## Arquitectura
- **Servidor Master**
- Monolítico (un único servicio)
- División lógica en controladores -> servicios -> repositorios
- Solo recibe y agrega información
- GUI de consulta
- **Servidor Shard**
- Dos servicios (Persistence + Core)
- Gestiona los eventos de los jugadores
- GUI para simular jugadores
- Reenvío de eventos a Master
---
## ¿Por qué esta arquitectura?
- Separación clara de responsabilidades
- Escalado horizontal de shards
- Aislamiento del dominio de juego
- Centralización de analítica
- Escenario realista para estudiar consultas
---