0% encontró este documento útil (0 votos)
4 vistas7 páginas

Backend Con Spring Boot

El documento describe las principales anotaciones de Spring Boot para la persistencia de datos, organizadas en capas como modelo de datos, acceso a datos, servicio y controlador. Se abordan conceptos fundamentales como el Entity Manager, el contexto de persistencia y estrategias de carga, además de patrones arquitectónicos como DAO y Repository. También se mencionan consideraciones de rendimiento, como el problema N+1 y el procesamiento por lotes.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas7 páginas

Backend Con Spring Boot

El documento describe las principales anotaciones de Spring Boot para la persistencia de datos, organizadas en capas como modelo de datos, acceso a datos, servicio y controlador. Se abordan conceptos fundamentales como el Entity Manager, el contexto de persistencia y estrategias de carga, además de patrones arquitectónicos como DAO y Repository. También se mencionan consideraciones de rendimiento, como el problema N+1 y el procesamiento por lotes.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Backend con Spring Boot: Anotaciones Principales para Persistencia

de Datos

Visión Conceptual del Ecosistema Spring Boot

Spring Boot representa un framework de desarrollo que opera bajo el paradigma de convención
sobre configuración, eliminando la necesidad de configuraciones XML extensas mediante la auto-
configuración inteligente basada en las dependencias presentes en el classpath.

Taxonomía de Anotaciones para Persistencia

Capa de Modelo de Datos (Entidades)

**@Entity**

- Designa una clase POJO como entidad persistente mapeable a una tabla de base de datos

- Establece el contrato de persistencia con el motor JPA

**@Table**

- Especifica metadatos de mapeo a la tabla física

- Permite personalizar nombre de tabla, esquema y catálogo

**@Id**

- Identifica el atributo que actuará como llave primaria

- Define la propiedad de unicidad e identidad de la entidad

**@GeneratedValue**

- Configura la estrategia de generación automática de valores primarios

- Soporta estrategias: IDENTITY, SEQUENCE, TABLE y AUTO


**@Column**

- Personaliza el mapeo atributo-columna

- Controla constraints: nulabilidad, unicidad, longitud y precisión

**@Enumerated**

- Maneja el mapeo de tipos enumerados

- Soporta persistencia por ordinal o por string

**@Temporal**

- Especifica el mapeo de tipos Date y Calendar

- Distingue entre fecha, hora o timestamp

Anotaciones de Relacionalidad

**@OneToOne**

- Establece relación biunívoca entre entidades

- Configura cardinalidad 1:1 con optionalidad configurable

**@OneToMany**

- Define relación unilateral o bilateral 1:N

- Maneja propagación de operaciones mediante cascade

**@ManyToOne**

- Implementa el lado muchos de relación N:1

- Soporte para fetch strategies y optionalidad

**@ManyToMany**

- Modela relaciones de muchos-a-muchos

- Requiere tabla join intermedia


**@JoinColumn**

- Especifica la columna foreign key para relaciones

- Controla nombre y constraints de la FK

**@JoinTable**

- Configura tabla intermedia para relaciones ManyToMany

- Personaliza nombres de columnas y tabla

Capa de Acceso a Datos

**@Repository**

- Stereotype annotation para componentes DAO

- Provee traducción automática de excepciones

**@Transactional**

- Delimita boundaries transaccionales a nivel método

- Configura propagación, isolation y rollback rules

**@Modifying**

- Marca queries que modifican el estado de la base de datos

- Requerido para UPDATE, DELETE operaciones

**@Query**

- Define consultas personalizadas JPQL o nativas

- Soporta parámetros nombrados y posicionales

Capa de Servicio
**@Service**

- Identifica componentes de lógica de negocio

- Facilita la inyección de dependencias

**@Transactional** (a nivel servicio)

- Maneja transacciones a nivel de unidad de negocio

- Coordina transacciones distribuidas

Capa de Controlador

**@RestController**

- Combina @Controller con @ResponseBody

- Facilita creación de APIs RESTful

**@RequestMapping**

- Mapea URLs a métodos handler

- Configura path, método HTTP y produces/consumes

**@GetMapping, @PostMapping, @PutMapping, @DeleteMapping**

- Anotaciones compuestas para métodos HTTP específicos

- Simplifican el mapeo de endpoints

**@PathVariable**

- Extrae valores de segmentos URL

- Soporta expresiones regulares y optionalidad

**@RequestParam**

- Bindea parámetros de query string

- Configura required default values


**@RequestBody**

- Deserializa payload JSON/XML a objetos Java

- Integra con validación Bean Validation

Anotaciones de Configuración

**@SpringBootApplication**

- Anotación compuesta: @Configuration, @EnableAutoConfiguration, @ComponentScan

- Punto de entrada de aplicaciones Spring Boot

**@Configuration**

- Define clases de configuración con beans definitions

- Reemplaza archivos XML de configuración

**@Bean**

- Declara beans managed por Spring container

- Configura scope y cualificadores

**@Autowired**

- Inyección de dependencias por tipo

- Soporta qualifiers para resolución de ambigüedades

**@Value**

- Inyecta valores desde properties files

- Soporta expresiones SpEL

Conceptos Fundamentales de Persistencia


Entity Manager

- Interfaz principal para operaciones de persistencia

- Maneja el contexto de persistencia y cache de primer nivel

Persistence Context

- Conjunto de entidades managed en una sesión

- Garantiza consistencia e identidad de objetos

Flush Operations

- Sincronización del contexto de persistencia con la base de datos

- Puede ser automático o manual

Fetch Strategies

- EAGER: Carga inmediata de relaciones

- LAZY: Carga bajo demanda de relaciones

Cascade Types

- PERSIST: Propaga operaciones de persistencia

- MERGE: Propaga operaciones de merge

- REMOVE: Propaga operaciones de eliminación

- ALL: Propaga todas las operaciones

Transaction Management

- Atomicidad de operaciones de base de datos

- Spring-managed vs Container-managed transactions

Patrones Arquitectónicos

Data Access Object (DAO)


- Abstracción del acceso a datos

- Separa lógica de negocio de detalles de persistencia

Repository Pattern

- Abstracción de colección de objetos

- Provee interfaz orientada al dominio

Unit of Work

- Mantiene track de cambios en objetos durante una transacción

- Coordina la escritura de cambios

Consideraciones de Performance

N+1 Query Problem

- Issue común en relaciones lazy loading

- Soluciones: JOIN FETCH, Entity Graphs

Cache Levels

- First Level Cache: Cache de sesión

- Second Level Cache: Cache compartido

- Query Cache: Cache de resultados de queries

Batch Processing

- Optimización de operaciones bulk

- Uso de paginación para grandes volúmenes

Este marco conceptual proporciona los fundamentos teóricos necesarios para comprender la
arquitectura de persistencia en Spring Boot, estableciendo las bases para la implementación
práctica de sistemas backend robustos y escalables.

También podría gustarte