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.
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 } }
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 }
Puedes especificar qué excepciones deben provocar una reversión:
@Transactional(rollbackFor = Exception.class) public void createUser() { // your transactional code here }
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 }
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 } }
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 } }
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.
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
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