Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Transaktiot | Työskentely Tietokantojen Kanssa
Spring Boot Backend

bookTransaktiot

Transaktio antaa meille käytännössä valinnan: joko kaikki sen sisällä olevat toiminnot suoritetaan onnistuneesti loppuun, tai mitään niistä ei suoriteta lainkaan.

Kuvittele pankkisiirto, jossa rahaa siirretään yhdeltä tililtä toiselle. Tämä prosessi sisältää kaksi vaihetta:

  1. Rahan vähentäminen yhdeltä tililtä;
  2. Rahan tallettaminen toiselle tilille.

Jos transaktio epäonnistuu rahan vähentämisen jälkeen mutta ennen talletusta, varat voivat "kadota". Transaktio varmistaa, että molemmat toiminnot joko suoritetaan kokonaan tai perutaan kokonaan.

Transaktioiden hallinnan perusteet

@Transactional -annotaatio: Tätä käytetään määrittämään metodit tai luokat, jotka tulee suorittaa transaktion kontekstissa.

Kun metodia, jolla on tämä annotaatio, kutsutaan, Spring käynnistää uuden transaktion. Jos metodi suoritetaan onnistuneesti, transaktio kommitoidaan; muussa tapauksessa se peruutetaan.

Tarkastellaan esimerkkiä aiemmin mainitusta todellisesta tilanteesta.

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

Kun transferMoney-metodi on merkitty @Transactional-annotaatiolla, kaikki tämän metodin sisällä tapahtuvat muutokset suoritetaan yhtenä transaktiona.

Kun kutsutaan fromAccount.withdraw(amount) ja sen jälkeen toAccount.deposit(amount), molempien toimintojen on onnistuttava. Jos esimerkiksi virhe tapahtuu toAccount.deposit(amount)-operaation aikana, transaktio peruuttaa automaattisesti fromAccount.withdraw(amount)-vaiheessa tehdyt muutokset.

Tämä varmistaa, että joko molemmat operaatiot suoritetaan ja rahat siirretään, tai virheen sattuessa kumpaakaan operaatiota ei suoriteta, mikä estää varojen menetyksen. Transaktio takaa, että tietokanta ei jää koskaan epäjohdonmukaiseen tilaan.

Transaktioiden käytännön soveltaminen

Yhteenveto

Transaktio on joukko tietokantaoperaatioita, joita käsitellään yhtenä kokonaisuutena, varmistaen, että kaikki operaatiot onnistuvat yhdessä tai kaikki peruutetaan epäonnistumisen sattuessa. Voit lukea lisää transaktioista täältä.

question mark

Mitä tarkoitetaan transaction tietokannan yhteydessä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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

bookTransaktiot

Pyyhkäise näyttääksesi valikon

Transaktio antaa meille käytännössä valinnan: joko kaikki sen sisällä olevat toiminnot suoritetaan onnistuneesti loppuun, tai mitään niistä ei suoriteta lainkaan.

Kuvittele pankkisiirto, jossa rahaa siirretään yhdeltä tililtä toiselle. Tämä prosessi sisältää kaksi vaihetta:

  1. Rahan vähentäminen yhdeltä tililtä;
  2. Rahan tallettaminen toiselle tilille.

Jos transaktio epäonnistuu rahan vähentämisen jälkeen mutta ennen talletusta, varat voivat "kadota". Transaktio varmistaa, että molemmat toiminnot joko suoritetaan kokonaan tai perutaan kokonaan.

Transaktioiden hallinnan perusteet

@Transactional -annotaatio: Tätä käytetään määrittämään metodit tai luokat, jotka tulee suorittaa transaktion kontekstissa.

Kun metodia, jolla on tämä annotaatio, kutsutaan, Spring käynnistää uuden transaktion. Jos metodi suoritetaan onnistuneesti, transaktio kommitoidaan; muussa tapauksessa se peruutetaan.

Tarkastellaan esimerkkiä aiemmin mainitusta todellisesta tilanteesta.

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

Kun transferMoney-metodi on merkitty @Transactional-annotaatiolla, kaikki tämän metodin sisällä tapahtuvat muutokset suoritetaan yhtenä transaktiona.

Kun kutsutaan fromAccount.withdraw(amount) ja sen jälkeen toAccount.deposit(amount), molempien toimintojen on onnistuttava. Jos esimerkiksi virhe tapahtuu toAccount.deposit(amount)-operaation aikana, transaktio peruuttaa automaattisesti fromAccount.withdraw(amount)-vaiheessa tehdyt muutokset.

Tämä varmistaa, että joko molemmat operaatiot suoritetaan ja rahat siirretään, tai virheen sattuessa kumpaakaan operaatiota ei suoriteta, mikä estää varojen menetyksen. Transaktio takaa, että tietokanta ei jää koskaan epäjohdonmukaiseen tilaan.

Transaktioiden käytännön soveltaminen

Yhteenveto

Transaktio on joukko tietokantaoperaatioita, joita käsitellään yhtenä kokonaisuutena, varmistaen, että kaikki operaatiot onnistuvat yhdessä tai kaikki peruutetaan epäonnistumisen sattuessa. Voit lukea lisää transaktioista täältä.

question mark

Mitä tarkoitetaan transaction tietokannan yhteydessä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 6
some-alt