ADR-0004: Solo jOOQ, sin JPA
Estado: Aceptado · Fecha: 2026-09-24
Contexto
El pom.xml inicial traía spring-boot-starter-data-jpa y spring-boot-starter-jooq. El LIS
es intensivo en consultas de lista y de reporte —lista de trabajo por sección, resultados para
informe, tiempos de respuesta, stock bajo—, que el esquema ya resuelve como vistas. Al mismo
tiempo, sus agregados son pequeños y sus invariantes viven en tipos de dominio, no en grafos
de objetos persistentes.
Decisión
Todo acceso a datos es jOOQ. spring-boot-starter-data-jpa sale del pom.xml.
Consecuencias
- Un solo modelo de acceso. Sin lazy loading, sin sesión de persistencia, sin N+1 encubiertos.
- El SQL es explícito y revisable; las vistas del esquema se consumen como modelo de lectura de primera clase.
- La regla se vuelve verificable: lo prohibido no está en el classpath. Una prohibición que
depende de la disciplina no es una regla.
− Más código de mapeo entre
Recordy objetos de dominio; se escribe a mano en cada adaptador. − Coste de revertir alto: volver a JPA implicaría reescribir todos los adaptadores.
Alternativas descartadas
Solo JPA: las consultas del LIS acabarían en nativeQuery, que es jOOQ sin tipado.
JPA para escritura y jOOQ para lectura: dos modelos de acceso, dos formas de abrir transacción y dos cachés de las que razonar, para un beneficio que aquí no se materializa.