Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Transações | Trabalhando com Bancos de Dados
Spring Boot Backend

bookTransaçõ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:

  1. Debitar dinheiro de uma conta;
  2. 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

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); } }

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.

question mark

O que é uma transaction no contexto de um banco de dados?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.45

bookTransaçõ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:

  1. Debitar dinheiro de uma conta;
  2. 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

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); } }

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.

question mark

O que é uma transaction no contexto de um banco de dados?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 6
some-alt