"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Entendiendo @Transactional en Spring Boot

Entendiendo @Transactional en Spring Boot

Publicado el 2024-07-29
Navegar:452

Understanding @Transactional in Spring Boot

La gestión de transacciones en Spring Boot se puede realizar mediante la anotación @Transactional. En esta publicación de blog, exploraremos cómo usar @Transactional para garantizar la coherencia de los datos y simplificar el manejo de errores en sus aplicaciones Spring Boot.

1. Uso básico

Para usar @Transactional, normalmente lo colocas en métodos de una clase de servicio donde deseas el comportamiento transaccional.

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService{

    @Transactional
    public void createUser() {
        // enter your transactional code here
    }
}

2. Niveles de propagación y aislamiento

Puedes especificar los niveles de propagación y aislamiento de una transacción para controlar cómo se comporta la transacción:

  • Propagación: define cómo se comporta la transacción cuando ya se está ejecutando una transacción existente.

  • Aislamiento: Define el nivel de visibilidad de datos de la transacción.

@Transactional(propagation = Propagation.REQUIRED, 
              isolation = Isolation.READ_COMMITTED)
public void createUser() {
    // enter your transactional code here
}

3. Reglas de reversión

Puedes especificar qué excepciones deben provocar una reversión:

@Transactional(rollbackFor = Exception.class)
public void createUser() {
    // your transactional code here
}

4. Transacciones de solo lectura

Si su método solo lee datos y no realiza ninguna operación de escritura, puede marcarlo como de solo lectura para optimizar el rendimiento:

@Transactional(readOnly = true)
public void getUser() {
    // your read-only code here
}

5. Transaccional en clases

También puedes colocar @Transactional en el nivel de clase para aplicarlo a todos los métodos de la clase:

@Service
@Transactional
public class UserService {

    public void getUser() {
        // transactional code
    }

    public void createUser() {
        // transactional code
    }
}

Servicio de ejemplo con métodos transaccionales

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService {

    @Transactional
    public void saveUser() {
        // code to save data
    }

    @Transactional(readOnly = true)
    public void fetchUser() {
        // code to fetch data
    }

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void newTransaction() {
        // code to execute in a new transaction
    }

    @Transactional(rollbackFor = {CustomException.class})
    public void performWithRollback() {
        // risky code that may throw CustomException
    }
}

Resumen

El uso de @Transactional Spring Boot le permite administrar transacciones de forma declarativa, especificando exactamente cómo desea que se comporten las transacciones en varios escenarios. Esto ayuda a garantizar la coherencia de los datos y simplifica el manejo de errores en sus aplicaciones.

Referencias

https://www.baeldung.com/spring-transactions-read-only

https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html

Github: https://github.com/tharindu1998/transactional-blog

Declaración de liberación Este artículo se reproduce en: https://dev.to/tharindufdo/understanding-transactional-in-spring-boot-8ce?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3