Транзакції
Транзакція фактично надає нам вибір: або всі операції в її межах виконуються успішно, або жодна з них не виконується взагалі.
Уявіть собі операцію банківського переказу, коли гроші переміщуються з одного рахунку на інший. Цей процес включає два кроки:
- Списання коштів з одного рахунку;
- Зарахування коштів на інший рахунок.
Якщо транзакція зазнає невдачі після списання коштів, але до зарахування, кошти можуть бути "втрачені". Транзакція гарантує, що обидві операції або повністю завершуються, або повністю скасовуються.
Основи керування транзакціями
Анотація @Transactional: використовується для позначення методів або класів, які повинні виконуватися у контексті транзакції.
Коли викликається метод з цією анотацією, Spring розпочинає нову транзакцію. Якщо метод завершується успішно, транзакція фіксується; інакше вона відкочується.
Розглянемо приклад на основі реальної ситуації, згаданої раніше.
BankService.java
Коли метод transferMoney позначено анотацією @Transactional, це означає, що всі зміни, які відбуваються всередині цього методу, будуть виконані в межах однієї транзакції.
Коли викликається fromAccount.withdraw(amount) після чого toAccount.deposit(amount), обидві ці дії мають бути успішно завершені. Якщо, наприклад, під час операції toAccount.deposit(amount) виникає помилка, транзакція автоматично відкотить зміни, зроблені під час кроку fromAccount.withdraw(amount).
Це гарантує, що або обидві операції виконуються і гроші переводяться, або, у разі помилки, жодна операція не виконується, що запобігає будь-якій втраті коштів. Транзакція гарантує, що база даних ніколи не залишиться у неконсистентному стані.
Практичне застосування транзакцій
Підсумок
Транзакція — це набір операцій з базою даних, які розглядаються як єдине ціле, що забезпечує успішне виконання всіх операцій разом або їх повний відкат у разі помилки. Дізнатися більше про транзакції можна тут.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.45
Транзакції
Свайпніть щоб показати меню
Транзакція фактично надає нам вибір: або всі операції в її межах виконуються успішно, або жодна з них не виконується взагалі.
Уявіть собі операцію банківського переказу, коли гроші переміщуються з одного рахунку на інший. Цей процес включає два кроки:
- Списання коштів з одного рахунку;
- Зарахування коштів на інший рахунок.
Якщо транзакція зазнає невдачі після списання коштів, але до зарахування, кошти можуть бути "втрачені". Транзакція гарантує, що обидві операції або повністю завершуються, або повністю скасовуються.
Основи керування транзакціями
Анотація @Transactional: використовується для позначення методів або класів, які повинні виконуватися у контексті транзакції.
Коли викликається метод з цією анотацією, Spring розпочинає нову транзакцію. Якщо метод завершується успішно, транзакція фіксується; інакше вона відкочується.
Розглянемо приклад на основі реальної ситуації, згаданої раніше.
BankService.java
Коли метод transferMoney позначено анотацією @Transactional, це означає, що всі зміни, які відбуваються всередині цього методу, будуть виконані в межах однієї транзакції.
Коли викликається fromAccount.withdraw(amount) після чого toAccount.deposit(amount), обидві ці дії мають бути успішно завершені. Якщо, наприклад, під час операції toAccount.deposit(amount) виникає помилка, транзакція автоматично відкотить зміни, зроблені під час кроку fromAccount.withdraw(amount).
Це гарантує, що або обидві операції виконуються і гроші переводяться, або, у разі помилки, жодна операція не виконується, що запобігає будь-якій втраті коштів. Транзакція гарантує, що база даних ніколи не залишиться у неконсистентному стані.
Практичне застосування транзакцій
Підсумок
Транзакція — це набір операцій з базою даних, які розглядаються як єдине ціле, що забезпечує успішне виконання всіх операцій разом або їх повний відкат у разі помилки. Дізнатися більше про транзакції можна тут.
Дякуємо за ваш відгук!