- TransactionAttributeType.REQUIRED: se trata del valor por defecto si no se emplea la anotación para indicar el atributo transaccional. Se interpreta como que el método anotado con este valor tiene que ser ejecutado dentro de una transacción. Más especificamente, cuando existe una transacción activa y el método es invocado desde esa transacción, automáticamente entra a formar parte de la misma. Si por el contrario, es invocado desde un contexto no transaccional, se crea una nueva transacción para ejecutar el método. En caso de fallo, cuando se revierte la transacción, el rollback siempre afectará a los métodos anotados como "REQUIRED".
- TransactionAttributeType.REQUIRES_NEW: implica que siempre se creará una nueva transacción para el método anotado con este valor de atributo independientemente de si se invoca desde un contexto transaccional o no.
- TransactionAttributeType.SUPPORTS: supone la propagación del estado transaccional del contexto que invoca al método anotado con este valor. Esto es, si el método es invocado desde una transacción activa, entonces entrará a formar parte de esa transacción y también se verá afectado por el rollback en caso de fallo. En cambio, si el método es invocado normalmente, sin un contexto transaccional, entonces su código también se ejecutará normalmente sin formar parte de ninguna transacción.
- TransactionAttributeType.NOT_SUPPORTED: se emplea en situaciones donde determinadas tareas no pueden ejecutarse dentro de una transacción. Así, si el método anotado con este valor de atributo es invocado desde una transacción activa, la transacción es pausada justo antes de la invocación del método y reanudada tras su ejecución. En caso de una invocación desde un contexto no transaccional, el método se ejecutará normalmente fuera de cualquier transacción.
- TransactionAttributeType.MANDATORY: sirve para asegurarse de que el método anotado con este valor va a ejecutarse dentro de una transacción pero a diferencia de otros valores del atributo lanza una excepción si es invocado desde un contexto no transaccional.
- TransactionAttributeType.NEVER: se emplea en raras ocasiones. Permite que cuando desde una transacción activa se invoca un método anotado con este valor de atributo, automáticamente se lance una excepción.
miércoles, 12 de junio de 2013
Diapositivas. Clase 11: Transacciones en EJBs
Las transacciones manejadas por el contenedor EJB soportan distintos valores para su anotación @TransactionAttribute:
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario