Transações
Uma transação essencialmente nos oferece uma escolha: ou todas as operações dentro dela são concluídas com sucesso, ou nenhuma delas é executada.
Imagine uma operação de transferência bancária, onde o dinheiro é movido de uma conta para outra. Esse processo envolve dois passos:
- Debitar dinheiro de uma conta;
- Depositar dinheiro em outra conta.
Se a transação falhar após o débito do dinheiro, mas antes do depósito, os fundos podem ser "perdidos". Uma transação garante que ambas as operações sejam totalmente concluídas ou totalmente revertidas.
Fundamentos da Gestão de Transações
A anotação @Transactional: Utilizada para declarar métodos ou classes que devem ser executados dentro do contexto de uma transação.
Quando um método com essa anotação é chamado, o Spring inicia uma nova transação. Se o método for concluído com sucesso, a transação é confirmada; caso contrário, ela é desfeita.
Vamos apresentar um exemplo baseado no cenário real mencionado anteriormente.
BankService.java
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); } }
Quando o método transferMoney está marcado com a anotação @Transactional, isso significa que todas as alterações realizadas dentro deste método serão executadas em uma única transação.
Ao chamar fromAccount.withdraw(amount) seguido de toAccount.deposit(amount), ambas as ações devem ser concluídas com sucesso. Se, por exemplo, ocorrer um erro durante a operação toAccount.deposit(amount), a transação irá automaticamente reverter as alterações feitas durante a etapa fromAccount.withdraw(amount).
Isso garante que ambas as operações sejam executadas e o dinheiro seja transferido, ou, em caso de erro, nenhuma das operações seja realizada, evitando qualquer perda de fundos. A transação garante que o banco de dados nunca fique em um estado inconsistente.
Aplicação Prática de Transações
Resumo
Uma transação é um conjunto de operações no banco de dados tratadas como uma única unidade, garantindo que todas as operações sejam bem-sucedidas juntas ou totalmente revertidas em caso de falha. Você pode saber mais sobre transações aqui.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.45
Transações
Deslize para mostrar o menu
Uma transação essencialmente nos oferece uma escolha: ou todas as operações dentro dela são concluídas com sucesso, ou nenhuma delas é executada.
Imagine uma operação de transferência bancária, onde o dinheiro é movido de uma conta para outra. Esse processo envolve dois passos:
- Debitar dinheiro de uma conta;
- Depositar dinheiro em outra conta.
Se a transação falhar após o débito do dinheiro, mas antes do depósito, os fundos podem ser "perdidos". Uma transação garante que ambas as operações sejam totalmente concluídas ou totalmente revertidas.
Fundamentos da Gestão de Transações
A anotação @Transactional: Utilizada para declarar métodos ou classes que devem ser executados dentro do contexto de uma transação.
Quando um método com essa anotação é chamado, o Spring inicia uma nova transação. Se o método for concluído com sucesso, a transação é confirmada; caso contrário, ela é desfeita.
Vamos apresentar um exemplo baseado no cenário real mencionado anteriormente.
BankService.java
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); } }
Quando o método transferMoney está marcado com a anotação @Transactional, isso significa que todas as alterações realizadas dentro deste método serão executadas em uma única transação.
Ao chamar fromAccount.withdraw(amount) seguido de toAccount.deposit(amount), ambas as ações devem ser concluídas com sucesso. Se, por exemplo, ocorrer um erro durante a operação toAccount.deposit(amount), a transação irá automaticamente reverter as alterações feitas durante a etapa fromAccount.withdraw(amount).
Isso garante que ambas as operações sejam executadas e o dinheiro seja transferido, ou, em caso de erro, nenhuma das operações seja realizada, evitando qualquer perda de fundos. A transação garante que o banco de dados nunca fique em um estado inconsistente.
Aplicação Prática de Transações
Resumo
Uma transação é um conjunto de operações no banco de dados tratadas como uma única unidade, garantindo que todas as operações sejam bem-sucedidas juntas ou totalmente revertidas em caso de falha. Você pode saber mais sobre transações aqui.
Obrigado pelo seu feedback!