|
|
@@ -7,7 +7,7 @@ backgroundColor: #f4f5f7
|
|
|
color: #1f2933
|
|
|
style: |
|
|
|
section {
|
|
|
- font-size: 1.9em;
|
|
|
+ font-size: 1.8em;
|
|
|
}
|
|
|
|
|
|
h1, h2, h3 {
|
|
|
@@ -28,6 +28,10 @@ style: |
|
|
|
color: #1e293b;
|
|
|
}
|
|
|
|
|
|
+ .box-compact{
|
|
|
+ font-size: 85% !important;
|
|
|
+ line-height: 1.5;
|
|
|
+ }
|
|
|
|
|
|
.columns {
|
|
|
display: flex;
|
|
|
@@ -72,7 +76,7 @@ style: |
|
|
|
|
|
|
### Capa de persistencia relacional
|
|
|
|
|
|
->Un paseo (de 2h) buceando en código
|
|
|
+>Un paseito por las capas de persistencia de Spring Boot
|
|
|
|
|
|
<br/>
|
|
|
<br/>
|
|
|
@@ -124,24 +128,26 @@ Facilita el acceso a datos, pero <strong>las decisiones siguen siendo nuestras</
|
|
|
|
|
|
---
|
|
|
|
|
|
-## Capas de Spring Data
|
|
|
-
|
|
|
-**Aplicación**
|
|
|
-↓
|
|
|
-**Spring Data** — Abstracción de repositorios
|
|
|
-<small>Abstracción para definir repositorios y consultas</small>
|
|
|
-↓
|
|
|
-**JPA** — API estándar de persistencia
|
|
|
-<small>Especificación estándar (interfaces y anotaciones)</small>
|
|
|
-↓
|
|
|
-**Hibernate** — ORM (Object–Relational Mapping)
|
|
|
-<small>Traducción y mapeo de objetos a SQL</small>
|
|
|
-↓
|
|
|
-**JDBC Driver** — Comunicación con la base de datos
|
|
|
-<small>Ejecuta SQL contra la base de datos</small>
|
|
|
-↓
|
|
|
-**Base de datos**
|
|
|
+## Capas de Spring Data
|
|
|
+<div class="box-compact center">
|
|
|
+
|
|
|
+ **Aplicación**
|
|
|
+ ↓
|
|
|
+ **Spring Data** — Abstracción de repositorios
|
|
|
+ <small>Abstracción para definir repositorios y consultas</small>
|
|
|
+ ↓
|
|
|
+ **JPA** — API estándar de persistencia
|
|
|
+ <small>Especificación estándar (interfaces y anotaciones)</small>
|
|
|
+ ↓
|
|
|
+ **Hibernate** — ORM (Object–Relational Mapping)
|
|
|
+ <small>Traducción y mapeo de objetos a SQL</small>
|
|
|
+ ↓
|
|
|
+ **JDBC Driver** — Comunicación con la base de datos
|
|
|
+ <small>Ejecuta SQL contra la base de datos</small>
|
|
|
+ ↓
|
|
|
+ **Base de datos**
|
|
|
|
|
|
+</div>
|
|
|
|
|
|
---
|
|
|
|
|
|
@@ -274,16 +280,19 @@ En Spring Data podemos consultar usando:
|
|
|
3. SQL nativo (`nativeQuery`)
|
|
|
|
|
|
<br>
|
|
|
-<div class="box warning w-30 center">
|
|
|
-
|
|
|
-**A mayor abstracción:**
|
|
|
-- Menos control
|
|
|
-- Más conveniencia
|
|
|
+<div class="columns">
|
|
|
+ <div class="box warning w-40 center">
|
|
|
|
|
|
-**A menor abstracción:**
|
|
|
-- Más control
|
|
|
-- Más responsabilidad
|
|
|
+ **A mayor abstracción:**
|
|
|
+ - Menos control
|
|
|
+ - Más conveniencia
|
|
|
+ </div>
|
|
|
+ <div class="box warning w-40 center">
|
|
|
|
|
|
+ **A menor abstracción:**
|
|
|
+ - Más control
|
|
|
+ - Más responsabilidad
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
---
|
|
|
@@ -304,7 +313,7 @@ El rendimiento depende de <strong>cómo accedemos a los datos</strong>
|
|
|
|
|
|
## ¿La abstracción es más lenta?
|
|
|
|
|
|
-Pues... No siempre.
|
|
|
+Pues... no siempre...
|
|
|
|
|
|
Depende de:
|
|
|
- La consulta
|
|
|
@@ -391,19 +400,20 @@ El rendimiento depende más de la query que del lenguaje.
|
|
|
---
|
|
|
|
|
|
## Algunas técnicas para reducir coste
|
|
|
+<div class="box-compact">
|
|
|
|
|
|
-**Queries específicas**
|
|
|
-Aprovecha la potencia de la BD no tengas miedo a escribir 100 lineas de SQL
|
|
|
+ **Queries específicas**
|
|
|
+ <small>Aprovecha el SGBD, pierde el miedo a escribir 100 lineas de SQL</small>
|
|
|
|
|
|
-**Proyecciones**
|
|
|
-Traer solo lo necesario (tablas intermedias, vistas materizalidas, ...).
|
|
|
+ **Proyecciones**
|
|
|
+ <small>Traer solo lo necesario (tablas intermedias, vistas materizalidas, ...).</small>
|
|
|
|
|
|
-**Agregados**
|
|
|
-(`COUNT`, `SUM`, `AVG`) sobre el SGBD y no en dominio
|
|
|
+ **Agregados**
|
|
|
+ <small>(`COUNT`, `SUM`, `AVG`) sobre el SGBD y no en dominio</small>
|
|
|
|
|
|
-**Paginación real**
|
|
|
-Traer solo lo necesario, no todo + filtro posterior
|
|
|
-<br>
|
|
|
+ **Paginación real**
|
|
|
+ <small>Traer solo lo necesario, no todo + filtro posterior</small>
|
|
|
+<div>
|
|
|
<div class="columns">
|
|
|
<div class="box warning w-50 center">
|
|
|
|