serie de primavera 9-Spring control de transacciones

El sistema JavaEE se desarrolla en capas, y el procesamiento de transacciones se ubica en la capa empresarial Spring proporciona una solución de procesamiento de transacciones de capa empresarial de diseño en capas.
Spring Framework nos proporciona un conjunto de interfaces de control de transacciones.
El control de transacciones de Spring se basa en AOP, que puede implementarse mediante programación o configuración.

Introducción a la API
PlatformTransactionManager
Esta interfaz es el administrador de transacciones de Spring, que proporciona métodos de transacción de operación comunes, incluidas 3 operaciones específicas:

  • Obtener información del estado de la transacción
    • TransactionStatus getTransaction (definición de TransactionDefinition)
  • Confirmar transacción
    • void commit (estado de TransactionStatus)
  • Revertir la transacción
    • reversión nula (estado TransactionStatus)

Los objetos que realmente administran las transacciones
org.springframework.jdbc.datasourec.DataSourceTransactionManager usan Spring JDBC o iBatis para datos persistentes usan
org.springframework.orm.hibernate5.HibernateTransactionManager usan la versión Hibernate para datos persistentes

TransactionDefinition
Es un objeto de información de definición de transacción, método:

  • String getName () Obtiene el nombre del objeto de transacción
  • int getIsolationLevel () Obtiene el nivel de aislamiento de transacción
  • int getPropatationBehavior () Obtiene el comportamiento de propagación de transacciones
  • int getTimeout () Obtener tiempo de espera de transacción
  • boolean isReadOnly () Obtenga si la transacción es de solo lectura Transacción de lectura-
    escritura: agregue, elimine, modifique para abrir la transacción.
    Transacción de solo lectura: cuando se ejecuta la consulta, la transacción también se iniciará.

Nivel de aislamiento de transacción

El nivel de aislamiento de la transacción refleja la actitud de la transacción cuando la transacción se envía para acceso concurrente

  • ISOLATION_DEFAULT nivel predeterminado, que pertenece a uno de los siguientes
  • ISOLATION_READ_UNCOMMITTED puede leer datos no confirmados
  • ISOLATION_READ_COMMITTED solo puede leer los datos enviados para resolver el problema de lectura sucia (nivel predeterminado de Orale)
  • ISOLATION_REPEATABLE_READ si leer los datos modificados enviados por otras transacciones para resolver el problema de las lecturas no repetibles (nivel predeterminado de Mysql)
  • ISOLATION_SERIALIZABLE si leer los datos agregados por otras transacciones para resolver el problema de la lectura fantasma

Comportamiento transaccional

REQUERIDO: Si actualmente no hay una transacción, cree una nueva transacción, si ya hay una transacción, agregue a esta transacción, la opción general (predeterminada)
SOPORTES: admite la transacción actual, si no hay transacción, se ejecutará de manera no transaccional (no Transacción)
OBLIGATORIO: use la transacción actual, si no hay una transacción actualmente, arroje una excepción
REQUERS_NEW: cree una nueva transacción, si la transacción actual está en progreso, suspenda la transacción actual
NOT_SUPPORTED: realice operaciones de una manera no transaccional, si actualmente hay una transacción, entonces Suspenda la transacción actual
NUNCA: ejecute en un modo no transaccional, si una transacción existe actualmente, arroje una excepción
ANIDADA: si actualmente hay una transacción, se ejecuta en una transacción anidada, si no hay una transacción actualmente, realice una acción similar de REQUERIDA.

Supongo que te gusta

Origin www.cnblogs.com/mantishell/p/12694264.html
Recomendado
Clasificación