Weitere ähnliche Inhalte Ähnlich wie Curso de Spring: Transacciones (20) Mehr von Jano González (14) Kürzlich hochgeladen (11) Curso de Spring: Transacciones2. Temario General
➔ Transacciones
➔ Configurando Transacciones con XML
➔ Configurando Transacciones con anotaciones
4. ACID
➔ Atomicity: La transacción se realiza completa o
no se realiza, sin estados intermedios.
➔ Consistency: Una vez que todos los pasos se
han realizados, los datos quedan en un estado
consistente.
➔ Isolation: Las transacciones se ejecutan en
forma aislada.
➔ Durability: Una vez terminada la transacción,
sus datos deben sobrevivir una falla del
sistema.
5. Propagación
➔ Niveles típicos de propagación de
transacciones:
➔ REQUIRED
➔ REQUIRES_NEW
➔ SUPPORTED
➔ NOT_SUPPORTED
➔ MANDATORY
➔ NEVER
9. TXs Declarativas con XML
➔ Primero necesitamos un manejador de
transacciones:
➔ DataSourceTransactionManager
➔ JtaTransactionManager
➔ HibernateTransactionManager
➔ JpaTransactionManager.
➔ Etc...
10. TXs Declarativas con XML
➔ Primero necesitamos un manejador de
transacciones
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTr
ansactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
11. TXs Declarativas con XML
➔ Luego un advice
●<tx:advice id="transferenciaTxAdvice" transaction-
manager="transactionManager">
● <tx:attributes>
● <tx:method name="transferir" />
● </tx:attributes>
●</tx:advice>
12. TXs Declarativas con XML
➔ Y finalmente configuramos el pointcut
<aop:config>
<aop:pointcut id="transferenciaPointcut" expression=
"execution(*
com.ejemplo.services.TransferenciaService.*(..))" />
<aop:advisor advice-ref="transferenciaTxAdvice"
pointcut-ref="transferenciaPointcut" />
</aop:config>
15. TXs Declarativas con Anotaciones
➔ Primero necesitamos un manejador de
transacciones
➔ Luego usamos la configuración <tx:annotation-
driven />
16. TXs Declarativas con Anotaciones
➔ Los métodos transaccionales se anotan con
@Transactional
●@Transactional
●public Transferencia transferir(Cuenta origen, Cuenta
destino, BigDecimal monto) {
.
●.
●.
}
17. TXs Declarativas con Anotaciones
➔ También podemos usar atributos de
propagación
●@Transactional(propagation = Propagation.REQUIRED)
●public Transferencia transferir(Cuenta origen, Cuenta
destino, BigDecimal monto) {
.
●.
●.
}
18. TXs Declarativas con Anotaciones
➔ También podemos definir condiciones de
Rollback
● @Transactional(
● propagation = Propagation.REQUIRED,
● rollbackFor = IOException.class,
● noRollbackFor = ArithmeticException.class
●)
●public Transferencia transferir(Cuenta origen, Cuenta
destino, BigDecimal monto) {
.
●.
●.
}
19. TXs Declarativas con Anotaciones
➔ Otros atributos son timeout y read-only
● @Transactional(
● propagation = Propagation.REQUIRED,
● timeout = 30,
● readOnly = true
●)
●public Cuenta obtenerCuenta(String id) {
.
●.
●.
}