Я работаю над приложением Java, которое использует классы Spring IoC и JDBC Template. У меня есть класс DAO, который имеет 4 метода: от m1 () до m4 (). m1 выполняет множественные вставки и обновления для таблицы t1, m2 для таблицы t2, m3 для t3 и т. д.
Методы DAO используются следующим образом:
while(true)
{
//process & generate data
dao.m1(data1);
dao.m2(data2);
dao.m3(data3);
dao.m4(data4);
//sleep
}
Я хочу, чтобы операции db при 4 последовательных вызовах методов были атомарными, либо все 4 таблицы обновлены успешно, либо нет. Итак, если при выполнении операций в m3 () возникает ошибка, я хочу откатить все изменения (обновления и вставки), выполненные в m2 & m1.
Значит, весна позволяет вам сделать это следующим образом?
while (true)
{
//process & generate data
transaction = TransactionManager.createNewTransaction();
transaction.start()
try
{
dao.m1(data1);
dao.m2(data2);
dao.m3(data3);
dao.m4(data4);
}
catch(DbUpdateException e)
{
transaction.rollBack();
}
transaction.end();
// sleep
}
или есть лучшие способы сделать это?