Vai al contenuto

Glossario

Definizioni rapide dei termini usati nel progetto.

ADR
Architecture Decision Record. Documento che registra una decisione architetturale con contesto, alternative e conseguenze.
Always-valid object
Pattern di design in cui un'entità non può mai trovarsi in uno stato inconsistente: le invarianti sono enforced dal costruttore e dai metodi mutatori. Vedi step-05.
C4 Model
Notazione gerarchica per diagrammare architetture software a 4 livelli: Context, Container, Component, Code.
DTO
Data Transfer Object. Oggetto usato per trasportare dati tra layer. Nel progetto sono sempre record immutabili.
Flyway
Tool di migration versionate. Eseguito all'avvio applica gli script SQL in db/migration/.
JaCoCo
Java Code Coverage. Misura la copertura dei test. Nel progetto è configurato per fallire il build sotto il 70%.
JPA
Jakarta Persistence API. Standard Java per ORM. Implementazione: Hibernate 6.
MockMvc
API di Spring Test per testare controller MVC senza avviare un server HTTP reale.
N+1 problem
Anti-pattern JPA in cui caricare N entità innesca N query aggiuntive per le associazioni. Mitigato con FetchType.LAZY esplicito + fetch join quando serve.
Optimistic locking
Concorrenza basata su @Version: due update concorrenti generano OptimisticLockingFailureException.
ProblemDetail
Standard IETF (RFC 7807) per rappresentare errori HTTP in JSON. Vedi step-06.
Records
Feature Java (stabile da 16) che genera classi immutabili con costruttore, getter, equals/hashCode/toString automatici.
Service Connection
Feature Spring Boot 3.1+: @ServiceConnection su un @Container Testcontainers fa risolvere automaticamente le proprietà di connessione, niente più @DynamicPropertySource.
Slice test
Test che carica solo una parte del contesto Spring (@WebMvcTest, @DataJpaTest) per essere veloce e focalizzato.
State machine
Modello che enumera stati e transizioni valide. Implementata nell'enum TaskStatus + il metodo Task#changeStatus.
Testcontainers
Libreria che avvia container Docker effimeri durante i test (es. PostgreSQL reale invece di H2).
Virtual threads
Thread leggeri gestiti dalla JVM (Project Loom, stabili da Java 21). Ottimi per workload I/O-bound. Abilitati nel progetto via spring.threads.virtual.enabled=true.