Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Transaktioner | Arbejde med Databaser
Spring Boot Backend

bookTransaktioner

En transaktion giver os grundlæggende et valg: enten bliver alle operationer inden for den gennemført succesfuldt, eller også bliver ingen af dem udført overhovedet.

Forestil dig en bankoverførsel, hvor penge bliver flyttet fra én konto til en anden. Denne proces involverer to trin:

  1. Træk penge fra én konto;
  2. Indsæt penge på en anden konto.

Hvis transaktionen fejler efter penge er trukket, men før de indsættes, kan midlerne gå "tabt." En transaktion sikrer, at begge operationer enten bliver fuldt gennemført eller fuldt tilbagerullet.

Grundlæggende om transaktionsstyring

@Transactional annotation: Bruges til at angive metoder eller klasser, der skal udføres inden for rammen af en transaktion.

Når en metode med denne annotation kaldes, starter Spring en ny transaktion. Hvis metoden afsluttes succesfuldt, bliver transaktionen committed; ellers bliver den rullet tilbage.

Eksempel baseret på det tidligere nævnte virkelige scenarie.

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

Når metoden transferMoney er markeret med annoteringen @Transactional, betyder det, at alle ændringer, der sker inden for denne metode, vil blive udført som en enkelt transaktion.

Når vi kalder fromAccount.withdraw(amount) efterfulgt af toAccount.deposit(amount), skal begge disse handlinger gennemføres succesfuldt. Hvis der for eksempel opstår en fejl under operationen toAccount.deposit(amount), vil transaktionen automatisk rulle ændringerne tilbage, der blev foretaget under trinnet fromAccount.withdraw(amount).

Dette sikrer, at enten begge operationer udføres og pengene overføres, eller, i tilfælde af en fejl, ingen af operationerne gennemføres, hvilket forhindrer ethvert tab af midler. Transaktionen garanterer, at databasen aldrig efterlades i en inkonsistent tilstand.

Praktisk anvendelse af transaktioner

Resumé

En transaktion er et sæt af database-operationer behandlet som en enhed, hvilket sikrer, at alle operationer lykkes sammen eller fuldt ud rulles tilbage i tilfælde af fejl. Du kan læse mere om transaktioner her.

question mark

Hvad er en transaction i konteksten af en database?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 6

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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

bookTransaktioner

Stryg for at vise menuen

En transaktion giver os grundlæggende et valg: enten bliver alle operationer inden for den gennemført succesfuldt, eller også bliver ingen af dem udført overhovedet.

Forestil dig en bankoverførsel, hvor penge bliver flyttet fra én konto til en anden. Denne proces involverer to trin:

  1. Træk penge fra én konto;
  2. Indsæt penge på en anden konto.

Hvis transaktionen fejler efter penge er trukket, men før de indsættes, kan midlerne gå "tabt." En transaktion sikrer, at begge operationer enten bliver fuldt gennemført eller fuldt tilbagerullet.

Grundlæggende om transaktionsstyring

@Transactional annotation: Bruges til at angive metoder eller klasser, der skal udføres inden for rammen af en transaktion.

Når en metode med denne annotation kaldes, starter Spring en ny transaktion. Hvis metoden afsluttes succesfuldt, bliver transaktionen committed; ellers bliver den rullet tilbage.

Eksempel baseret på det tidligere nævnte virkelige scenarie.

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

Når metoden transferMoney er markeret med annoteringen @Transactional, betyder det, at alle ændringer, der sker inden for denne metode, vil blive udført som en enkelt transaktion.

Når vi kalder fromAccount.withdraw(amount) efterfulgt af toAccount.deposit(amount), skal begge disse handlinger gennemføres succesfuldt. Hvis der for eksempel opstår en fejl under operationen toAccount.deposit(amount), vil transaktionen automatisk rulle ændringerne tilbage, der blev foretaget under trinnet fromAccount.withdraw(amount).

Dette sikrer, at enten begge operationer udføres og pengene overføres, eller, i tilfælde af en fejl, ingen af operationerne gennemføres, hvilket forhindrer ethvert tab af midler. Transaktionen garanterer, at databasen aldrig efterlades i en inkonsistent tilstand.

Praktisk anvendelse af transaktioner

Resumé

En transaktion er et sæt af database-operationer behandlet som en enhed, hvilket sikrer, at alle operationer lykkes sammen eller fuldt ud rulles tilbage i tilfælde af fejl. Du kan læse mere om transaktioner her.

question mark

Hvad er en transaction i konteksten af en database?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 6
some-alt