Нужны ли нам вложенные транзакции базы данных?
Я кодирую свой собственный слой данных, используя JDBC для доступа к базам данных SQL, и одним из основных компонентов является менеджер транзакций.
Я немного запутался, стоит ли поддерживать вложенные транзакции в этом компоненте. Пример кода вложенной транзакции выглядит следующим образом:
tx1.begin();
... // do something with tx1
tx2.begin();
... // do something with tx2
tx2.commit();
...
tx1.commit();
Во время моих прошлых экспериментов по разработке они мне никогда не были нужны, и я думаю, что они делают код более сложным. Но я не уверен, что они бесполезны или полезны. Можете ли вы привести несколько примеров, в которых требуется или, по крайней мере, выгодна вложенная транзакция? И каковы их плюсы и минусы?
Чтобы уточнить мой вопрос и объяснить, что я имею в виду под транзакцией, я вставил свой комментарий ниже:
Я использую JDBC. Таким образом, менеджер транзакций не зависит от базовой базы данных. Под транзакцией я имею в виду не-AutoCommit соединения JDBC. Менеджер транзакций возвращает объект транзакции с подключением не-autoCommit. Код клиента, использующий эту транзакцию, фиксирует и закрывает соединение, фиксируя объект транзакции.
Заранее спасибо.