0%
Proyecto completo con Spring Boot

Proyecto

Todo lo anterior, ensamblado en una aplicación lista para producción.

15-20 min

Proyecto completo con Spring Boot

Las siete lecciones anteriores han tratado cada tema por separado. Este capítulo los ensambla en una aplicación de librería en línea, con la división en capas, los repositorios, la paginación, la gestión de transacciones y los tests. El objetivo no es mostrar una arquitectura ejemplar: es mostrar dónde se manifiesta cada trampa vista anteriormente en un proyecto real, y qué decisión de diseño la neutraliza.

Spring Data JPA añade sobre JPA un mecanismo que merece una pausa: genera la implementación de los repositorios a partir del nombre de los métodos. Escribir findByAuteurNomContainingIgnoreCase basta para obtener la consulta correspondiente. Es un ahorro de tiempo real, y una trampa igual de real, porque nada en el nombre de un método dice qué relaciones se cargarán, de modo que se vuelve a caer en los N+1 sin siquiera escribir JPQL.

La organización adoptada aquí se apoya en una única regla, que se deriva de todo lo anterior: una entidad nunca cruza la frontera de la capa transaccional. Las entidades viven en el servicio y los DTO salen de él. Esta regla elimina de golpe las LazyInitializationException, los N+1 desencadenados desde la capa web y las fugas de datos internos en las respuestas HTTP.

Comentarios

Los comentarios funcionan con GitHub Discussions

Inicia sesión con GitHub para participar en la discusión

¡Enlace copiado!