El concepto de transacción es algo que cualquiera que haya trabajado con una base de datos debería comprender perfectamente. Se establece un punto de inicio, se realizan operaciones, y se termina consolidando las operaciones realizadas (con un commit
), o deshaciéndolas (con un rollback
). La transacción garantiza la atomicidad de las operaciones, o todo o nada.
Spring da soporte para incorporar la gestión de transacciones a las aplicaciones más allá del ofrecido por un gestor de base de datos. Ya sea aprovechando las capacidades ofrecidas por un servidor de aplicaciones, o las proporcionadas de forma local por la propia aplicación mediante alguna librería que lo implemente. En los siguientes artículos de la serie dedicada a Spring reviso algunos términos importantes y muestro configuraciones de ejemplos:
– Transacciones (1) – Introducción
– Transacciones (2) – Definición y Uso
– Transacciones (3) – Configuración y Anotaciones
Una de las cosas que siempre me han gustado de esta parte es que basta con añadir la etiqueta @Transactional
sobre un método para conseguir que su código se ejecute dentro de una transacción. Una de las cosas que nunca me han gustado de esta parte es que en algunos casos, si la configuración no es correcta, el código no se ejecuta dentro de una transacción, pero no se eleva ningún mensaje de advertencia o error ni se produce ninguna excepción.
La siguiente tanda de artículos estará dedicado al acceso a base de datos y el mapeo objeto relacional en general.