Decisiones de arquitectura

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 Record y 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.