Repaso
English

¿Cuáles son los errores más comunes con JPA/Hibernate y @Transactional?

Respuesta

  • Consultas N+1: colecciones LAZY recorridas en un bucle; se soluciona con join fetch, @EntityGraph, batch size o proyecciones a DTO.
  • LazyInitializationException: leer un campo lazy fuera de la transacción; trae lo necesario dentro del servicio o usa DTOs.
  • Self-invocation o métodos privados: se salta el proxy, así que no hay transacción.
  • Las excepciones checked no hacen rollback por defecto (rollbackFor).
  • Transacciones demasiado largas (con llamadas a servicios HTTP lentos dentro) retienen conexiones de la base de datos.
  • Devolver entidades directamente desde los controladores: filtra campos y dispara lazy loading.
  • open-in-view (true por defecto en Boot) oculta problemas de lazy loading en la capa web; muchos equipos lo desactivan.

Términos clave

Practica esta pregunta en Repaso