Что именно UserTransactionManager это делает - PullRequest
0 голосов
/ 16 марта 2012

Сегодня я прочитал о JTA API, я увидел класс с именем UserTransactionManager. Мы должны начать нашу транзакцию перед выполнением запросов SQL, чтобы в случае возникновения каких-либо исключений мы могли откатить изменения.

Вот мой вопрос, что именно делает UserTransactionManager? Он предоставляет любой стек .. для выполнения SQL-запроса? Как происходит откат изменения SQL-запроса?

1 Ответ

1 голос
/ 16 марта 2012

UserTransactionManager - это интерфейс.Ваш контейнер обеспечивает реализацию во время выполнения.

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

Контейнер связывается с базой данных, когда вы открываете транзакцию, используя протокол XA, и говорит: «Эй, дайте мне соединение, но на самом деле ничего не пишите до диска (« commit ») доЯ говорю вам об этом. "

Далее вы запускаете некоторые запросы и сбрасываете их в базу данных.Когда вы очищаете свой контейнер, спрашивает базу данных: «Эй, запустите эти запросы, но ничего не пишите, пока я вам не скажу. Если вы не можете гарантировать, что они сразу же выполнят бросок и произойдут ошибка. Если они удастся, заблокируйте строкии таблицы, пока вы не услышите от меня снова, и я дам вам ОК, чтобы подтвердить ".

Наконец, ваша программа закрывает UserTransaction.Затем контейнер говорит базе данных: «Хорошо, все те строки, которые вы заблокировали, сбросьте все на диск (зафиксируйте) и разблокируйте их».

На самом деле все сложнее, особенно когда вы координируете глобальные транзакции.... но в основном, если все участники согласны с тем, что они могут гарантировать фиксацию, то все они фиксируют, или никто не коммитит.*http://en.wikipedia.org/wiki/Two-phase_commit_protocol

http://en.wikipedia.org/wiki/Distributed_transaction
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...