powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем использовать откат транзакций?
6 сообщений из 6, страница 1 из 1
Зачем использовать откат транзакций?
    #38733488
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Читаю книжку. встретил в ней объяснения причин использования отката транзакций и что-то не могу понять о чем идёт речь.

вот цитата из книги:

авторwhy are
you using the rollback() at all? The answer is given in the following three points:
The above example illustrates a two-operation transaction that is quite simple. In this case,
explicit rollback() will not change anything. However, in case of a multi-stage transaction
where you can define various milestones (in the form of savepoints, which we will discuss
shortly), rollback plays a vital role. Unfinished or incomplete subtransaction states may cause
inconsistencies.
• If your connection object is a pooled connection object, then it makes sense to call
rollback(). In case of a pooled connection object, the connection object will be reused later,
and at that time unfinished operations may cause inconsistencies.
• In general, using the rollback() method in failed cases is always recommended.

полностью ясен только последний пункт. Обычно, если во время транзакции что-то пошло не так - лучше всего откатиться.

в первом пункте непонятно как перевести multi-stage transaction. Если тут речь про то, что иногда можно откатываться не к самому началу, а к какому-то состоянию, то понятно...

во втором пункте непонятно что значит connection object is a pooled connection object. суммарный объект коннекшена какой-то. Помогите)
...
Рейтинг: 0 / 0
Зачем использовать откат транзакций?
    #38733515
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЧитаю книжку. встретил в ней объяснения причин использования отката транзакций и что-то не могу понять о чем идёт речь.

вот цитата из книги:

в первом пункте непонятно как перевести multi-stage transaction. Если тут речь про то, что иногда можно откатываться не к самому началу, а к какому-то состоянию, то понятно...

Да, именно так.

questionerавтор• If your connection object is a pooled connection object, then it makes sense to call
rollback(). In case of a pooled connection object, the connection object will be reused later,
and at that time unfinished operations may cause inconsistencies.

во втором пункте непонятно что значит connection object is a pooled connection object. суммарный объект коннекшена какой-то. Помогите)

Суть в том, что просто connection.close() само вызывает откат. Но если коннекшн из пула, то .close() реально только ставит ему статус "свободно", и, если не поставить ни .rollback(), ни .commit(), в другом месте его могут отдать (вместе с зависшими операциями) другому потоку. И он неожиданно закоммитит всё.

В общем- суть, как я понял, в том, что нельзя расчитывать на то, что .close() вызовет .rollback()
...
Рейтинг: 0 / 0
Зачем использовать откат транзакций?
    #38733532
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin,

а как понять "If your connection object is a pooled connection object,"

pooled connection у меня или нет.
...
Рейтинг: 0 / 0
Зачем использовать откат транзакций?
    #38733534
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая разница - есть пул подключений или нет?
Любой DML-оператор начинает транзакцию, если она не была уже начата явно.
Транзакция должна быть или зафиксирована (commit) или откачена (rollback). Если транзакция откатывается частично (rollback to точка), то остаток, опять-таки, должен быть или зафиксирован или откачен.
Поэтому выполняйте или фиксацию или откат перед тем, как закрыть соединение: "уходя - гасите свет".

P.S. Фиксация или откат - выбирает разработчик, но что-то одно он обязан выполнить.
...
Рейтинг: 0 / 0
Зачем использовать откат транзакций?
    #38733560
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

то, что вы написали, насколько я понял, относится к пунктам 1 и 3.

Мой вопрос - что хотел сказать автор пунктом 2?
...
Рейтинг: 0 / 0
Зачем использовать откат транзакций?
    #38733595
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я написал всё , что относится к транзакциям. Которые гарантируют согласованность в абревиатуре ACID.
Технически, реализация пула подключений может выполнять откат, когда приложение "закрывает" подключение для которого не была сделана фиксация, но, насколько я знаю, никаких гарантий такого поведения не существует.
Поэтому надо просто взять заправило собственноручно делать или фиксацию или откат, не полагаясь на поведение той или иной реализации.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем использовать откат транзакций?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]