Datos
Persistir sin convertir el controlador en una capa de datos.
Acceso a datos
Hasta ahora, los datos de la aplicación vivían en listas en memoria. Era suficiente para entender el enrutamiento y el enlace de formularios, pero resulta insostenible más allá de eso: todo desaparece al reiniciar, nada se comparte entre dos instancias y no se puede expresar ninguna consulta mínimamente fina.
El paso a una base de datos relacional es el momento en el que muchas aplicaciones Spring MVC se degradan. El controlador, hasta entonces sobrio, empieza a abrir conexiones, escribir SQL y gestionar transacciones. Aparecen bloques try/catch/finally sobre recursos JDBC, código de mapeo de ResultSet a objeto y una gestión de errores que varía de un método a otro. El controlador vuelve a ser exactamente lo que Spring MVC pretendía eliminar: un lugar donde todo se mezcla.
El problema no es solo estético. Mezclar el acceso a datos con la capa web vuelve las transacciones incontrolables. Un método de controlador que escribe en tres tablas sin un límite transaccional explícito puede dejar la base de datos en un estado intermedio si falla la tercera escritura, y nada en el código señala que ese riesgo existe.
Comentarios
Los comentarios funcionan con GitHub Discussions
Inicia sesión con GitHub para participar en la discusión