Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Transacties | Werken Met Databases
Spring Boot Backend

bookTransacties

Een transactie biedt in wezen een keuze: ofwel worden alle bewerkingen binnen de transactie succesvol voltooid, of geen van deze bewerkingen wordt uitgevoerd.

Stel je een bankoverschrijving voor, waarbij geld wordt overgeboekt van het ene account naar het andere. Dit proces bestaat uit twee stappen:

  1. Geld afschrijven van het ene account;
  2. Geld storten op het andere account.

Als de transactie mislukt nadat het geld is afgeschreven maar voordat het is gestort, kunnen de middelen "verloren" gaan. Een transactie zorgt ervoor dat beide bewerkingen volledig worden afgerond of volledig worden teruggedraaid.

Basisprincipes van transactiemanagement

De @Transactional annotatie: Dit wordt gebruikt om methoden of klassen aan te geven die binnen de context van een transactie moeten worden uitgevoerd.

Wanneer een methode met deze annotatie wordt aangeroepen, start Spring een nieuwe transactie. Als de methode succesvol wordt voltooid, wordt de transactie gecommit; anders wordt deze teruggedraaid.

Hier volgt een voorbeeld gebaseerd op het eerder genoemde praktijkscenario.

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

Wanneer de methode transferMoney is gemarkeerd met de annotatie @Transactional, betekent dit dat alle wijzigingen die binnen deze methode plaatsvinden, binnen één transactie worden uitgevoerd.

Wanneer fromAccount.withdraw(amount) wordt aangeroepen, gevolgd door toAccount.deposit(amount), moeten beide acties succesvol worden voltooid. Als er bijvoorbeeld een fout optreedt tijdens de bewerking toAccount.deposit(amount), zal de transactie automatisch de wijzigingen die tijdens de stap fromAccount.withdraw(amount) zijn gemaakt, terugdraaien.

Dit garandeert dat ofwel beide bewerkingen worden uitgevoerd en het geld wordt overgemaakt, of, in het geval van een fout, geen van beide bewerkingen wordt uitgevoerd, waardoor verlies van geld wordt voorkomen. De transactie garandeert dat de database nooit in een inconsistente staat achterblijft.

Praktische Toepassing van Transacties

Samenvatting

Een transactie is een reeks database-bewerkingen die als één eenheid worden behandeld, waarbij wordt gegarandeerd dat alle bewerkingen samen slagen of bij een fout volledig worden teruggedraaid. Meer informatie over transacties is te vinden hier.

question mark

Wat is een transaction in de context van een database?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 6

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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

bookTransacties

Veeg om het menu te tonen

Een transactie biedt in wezen een keuze: ofwel worden alle bewerkingen binnen de transactie succesvol voltooid, of geen van deze bewerkingen wordt uitgevoerd.

Stel je een bankoverschrijving voor, waarbij geld wordt overgeboekt van het ene account naar het andere. Dit proces bestaat uit twee stappen:

  1. Geld afschrijven van het ene account;
  2. Geld storten op het andere account.

Als de transactie mislukt nadat het geld is afgeschreven maar voordat het is gestort, kunnen de middelen "verloren" gaan. Een transactie zorgt ervoor dat beide bewerkingen volledig worden afgerond of volledig worden teruggedraaid.

Basisprincipes van transactiemanagement

De @Transactional annotatie: Dit wordt gebruikt om methoden of klassen aan te geven die binnen de context van een transactie moeten worden uitgevoerd.

Wanneer een methode met deze annotatie wordt aangeroepen, start Spring een nieuwe transactie. Als de methode succesvol wordt voltooid, wordt de transactie gecommit; anders wordt deze teruggedraaid.

Hier volgt een voorbeeld gebaseerd op het eerder genoemde praktijkscenario.

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

Wanneer de methode transferMoney is gemarkeerd met de annotatie @Transactional, betekent dit dat alle wijzigingen die binnen deze methode plaatsvinden, binnen één transactie worden uitgevoerd.

Wanneer fromAccount.withdraw(amount) wordt aangeroepen, gevolgd door toAccount.deposit(amount), moeten beide acties succesvol worden voltooid. Als er bijvoorbeeld een fout optreedt tijdens de bewerking toAccount.deposit(amount), zal de transactie automatisch de wijzigingen die tijdens de stap fromAccount.withdraw(amount) zijn gemaakt, terugdraaien.

Dit garandeert dat ofwel beide bewerkingen worden uitgevoerd en het geld wordt overgemaakt, of, in het geval van een fout, geen van beide bewerkingen wordt uitgevoerd, waardoor verlies van geld wordt voorkomen. De transactie garandeert dat de database nooit in een inconsistente staat achterblijft.

Praktische Toepassing van Transacties

Samenvatting

Een transactie is een reeks database-bewerkingen die als één eenheid worden behandeld, waarbij wordt gegarandeerd dat alle bewerkingen samen slagen of bij een fout volledig worden teruggedraaid. Meer informatie over transacties is te vinden hier.

question mark

Wat is een transaction in de context van een database?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 6
some-alt