Compromisos y restituciones de la base de datos para mandatos de controlador

Cuando se ejecuta un mandato de controlador, se suelen actualizar o crear los datos. En muchos casos, es necesario actualizar la base de datos con información nueva al final de la transacción.

El controlador de soluciones marca el inicio de la transacción antes de llamar a la fachada de lógica de negocio. Una vez completada la ejecución del mandato de controlador, el mandato de controlador devuelve un nombre de vista al controlador. El controlador es el responsable de marcar el final de la transacción. El punto real en el que la transacción finaliza (antes o después de invocar la vista) dependerá del tipo de vista utilizado.

Para las aplicaciones web, el controlador de soluciones determina el tipo de vista consultando el nombre de vista en los archivos de configuración de Struts:

  • Si el mandato de vista que se va a utilizar es un mandato de reenvío o de redirección de vista, el mandato de vista se ejecuta dentro del contexto de la transacción actual. En este caso, el compromiso o la restitución de la base de datos no se lleva a cabo hasta que finaliza el mandato de vista.
  • Si la respuesta es una redirección, el mandato de vista funciona fuera del ámbito de la transacción actual y el compromiso o la restitución de la base de datos se lleva a cabo antes de llamar al mandato de vista.

En los casos en los que el mandato de vista se ejecuta bajo el mismo ámbito de transacción que el mandato de controlador, un error en la ejecución del mandato de vista hace que se produzca una restitución de toda la transacción. Es posible que esta no sea el resultado deseado, dependiendo de la lógica de negocio.