Как я могу указать точку отката для транзакции в Spring?
Предполагая следующий сценарий, мне нужно выполнить очень длинную вставку в базу данных, которая занимает довольно много времени (несколько минут). Эта операция вставки заключена в транзакцию, которая гарантирует, что в случае возникновения проблемы транзакция будет прервана, а база данных восстановлена до состояния, предшествующего началу транзакции.
Однако это решение влияет на производительность приложения, поскольку другие транзакции не могут получить доступ к базе данных, пока выполняется длинная транзакция. Я решил эту проблему, разделив большую транзакцию на несколько меньших транзакций, выполняющих одну и ту же операцию. Однако, если одна из этих небольших транзакций завершается неудачей, база данных возвращается к состоянию, предшествующему этой последней транзакции. К сожалению, это оставило бы базу данных в неправильном состоянии. Я хочу, чтобы при возникновении ошибок в какой-либо из этих небольших транзакций база данных откатывалась к состоянию, предшествующему первой небольшой транзакции (т. е. к точно такому же состоянию, она будет откатываться, если эта операция выполняется отдельной транзакцией).
Есть ли у вас какие-либо предложения, как я могу добиться этого с помощью транзакций Spring?