У меня есть приложение, в котором есть много разных типов объектов, каждый из которых сохраняется в БД. До сих пор это работало нормально, без транзакций, и я не собираюсь задирать, добавляя их. Но иногда возникает необходимость начать транзакцию до того, как начнется обновление всей коллекции объектов, чтобы убедиться, что база данных фактически обновляется только в случае успешного выполнения всех объектов в коллекции.
Например, скажем, у меня есть коллекция яблок. Команда выдается в коллекцию для обновления всех яблок. [запуск транзакции должен быть здесь] Каждое яблоко выполняет код для обновления. [фиксация / откат транзакции должна происходить здесь].
Недостаток, который у меня есть, заключается в том, что каждое обновление сейчас является атомарным (явно не заключено в транзакцию). Я мог бы передать идентификатор каждому «яблоку», чтобы идентифицировать транзакцию, которая была сохранена в каком-то кеше, но тогда есть риск, что кеш будет признан недействительным в процессе обновления и вызовет ненужную проблему.
Так каков лучший подход к этому?