Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Transacciones | Trabajando con Bases de Datos
Spring Boot Backend

bookTransacciones

Una transacción nos ofrece esencialmente una opción: o todas las operaciones dentro de ella se completan con éxito, o ninguna de ellas se ejecuta en absoluto.

Imagina una operación de transferencia bancaria, donde el dinero se mueve de una cuenta a otra. Este proceso implica dos pasos:

  1. Descontar dinero de una cuenta;
  2. Depositar dinero en otra cuenta.

Si la transacción falla después de descontar el dinero pero antes de depositarlo, los fondos podrían "perderse". Una transacción garantiza que ambas operaciones se completen totalmente o se reviertan completamente.

Fundamentos de la gestión de transacciones

La anotación @Transactional: Se utiliza para declarar métodos o clases que deben ejecutarse dentro del contexto de una transacción.

Cuando se llama a un método con esta anotación, Spring inicia una nueva transacción. Si el método finaliza correctamente, la transacción se confirma; de lo contrario, se revierte.

A continuación, se presenta un ejemplo basado en el escenario real mencionado anteriormente.

BankService.java

BankService.java

copy
1234567891011121314151617
@Service public class BankService { private AccountRepository accountRepository; @Transactional public void transferMoney(Long fromAccountId, Long toAccountId, double amount) { Account fromAccount = accountRepository.findById(fromAccountId); Account toAccount = accountRepository.findById(toAccountId); fromAccount.withdraw(amount); toAccount.deposit(amount); accountRepository.save(fromAccount); accountRepository.save(toAccount); } }

Cuando el método transferMoney está marcado con la anotación @Transactional, significa que todos los cambios que ocurren dentro de este método se ejecutarán dentro de una única transacción.

Cuando se llama a fromAccount.withdraw(amount) seguido de toAccount.deposit(amount), ambas acciones deben completarse exitosamente. Si, por ejemplo, ocurre un error durante la operación toAccount.deposit(amount), la transacción automáticamente revertirá los cambios realizados durante el paso fromAccount.withdraw(amount).

Esto garantiza que ambas operaciones se ejecuten y el dinero se transfiera, o, en caso de error, ninguna operación se realice, evitando cualquier pérdida de fondos. La transacción garantiza que la base de datos nunca quede en un estado inconsistente.

Aplicación Práctica de las Transacciones

Resumen

Una transacción es un conjunto de operaciones de base de datos tratadas como una unidad única, asegurando que todas las operaciones tengan éxito juntas o se reviertan completamente en caso de fallo. Puede aprender más sobre transacciones aquí.

question mark

¿Qué es una transaction en el contexto de una base de datos?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 6

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

What are the main benefits of using transactions in database operations?

Can you explain how the @Transactional annotation works in more detail?

Are there any common pitfalls or mistakes to avoid when working with transactions in Spring?

Awesome!

Completion rate improved to 3.45

bookTransacciones

Desliza para mostrar el menú

Una transacción nos ofrece esencialmente una opción: o todas las operaciones dentro de ella se completan con éxito, o ninguna de ellas se ejecuta en absoluto.

Imagina una operación de transferencia bancaria, donde el dinero se mueve de una cuenta a otra. Este proceso implica dos pasos:

  1. Descontar dinero de una cuenta;
  2. Depositar dinero en otra cuenta.

Si la transacción falla después de descontar el dinero pero antes de depositarlo, los fondos podrían "perderse". Una transacción garantiza que ambas operaciones se completen totalmente o se reviertan completamente.

Fundamentos de la gestión de transacciones

La anotación @Transactional: Se utiliza para declarar métodos o clases que deben ejecutarse dentro del contexto de una transacción.

Cuando se llama a un método con esta anotación, Spring inicia una nueva transacción. Si el método finaliza correctamente, la transacción se confirma; de lo contrario, se revierte.

A continuación, se presenta un ejemplo basado en el escenario real mencionado anteriormente.

BankService.java

BankService.java

copy
1234567891011121314151617
@Service public class BankService { private AccountRepository accountRepository; @Transactional public void transferMoney(Long fromAccountId, Long toAccountId, double amount) { Account fromAccount = accountRepository.findById(fromAccountId); Account toAccount = accountRepository.findById(toAccountId); fromAccount.withdraw(amount); toAccount.deposit(amount); accountRepository.save(fromAccount); accountRepository.save(toAccount); } }

Cuando el método transferMoney está marcado con la anotación @Transactional, significa que todos los cambios que ocurren dentro de este método se ejecutarán dentro de una única transacción.

Cuando se llama a fromAccount.withdraw(amount) seguido de toAccount.deposit(amount), ambas acciones deben completarse exitosamente. Si, por ejemplo, ocurre un error durante la operación toAccount.deposit(amount), la transacción automáticamente revertirá los cambios realizados durante el paso fromAccount.withdraw(amount).

Esto garantiza que ambas operaciones se ejecuten y el dinero se transfiera, o, en caso de error, ninguna operación se realice, evitando cualquier pérdida de fondos. La transacción garantiza que la base de datos nunca quede en un estado inconsistente.

Aplicación Práctica de las Transacciones

Resumen

Una transacción es un conjunto de operaciones de base de datos tratadas como una unidad única, asegurando que todas las operaciones tengan éxito juntas o se reviertan completamente en caso de fallo. Puede aprender más sobre transacciones aquí.

question mark

¿Qué es una transaction en el contexto de una base de datos?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 6
some-alt