Возможно ли интегрировать Spring с программной транзакционной памятью, чтобы я мог откатывать все транзакции объектов и БД вместе с методом исключения. Мне нужны возможности Spring + Deuce STM или Spring + Multiverse STM. Моя конечная цель - откат состояний объектов и состояния БД при методе, который бросает исключение.Программное обеспечение Transactional Memory + Spring
1
A
ответ
2
На данный момент Multiverse не поддерживает такую интеграцию напрямую, но это интересная функция. Я часть команды Multiverse & поговорит с автором, чтобы узнать, есть ли что-то, что позволит нам это сделать или расставьте приоритеты в наборе функций, над которыми мы работаем.
Мышление длительное ................................. ...............
Круглый способ сделать это - зарегистрировать слушателя PostEvent в транзакции в STM и отменить транзакцию БД, если транзакция STM не удалась. Вероятно, это может помочь :)
P.S. Какую версию Multiverse stm вы пытаетесь использовать?
--Sai
На самом деле я очень новичок в STM/Multiverse. Я хочу, чтобы решение было ориентировано на Spring таким образом, что Spring DB Transaction rollback восстанавливает/возвращает все объекты, измененные в этом конкретном методе. Это связано с тем, что у меня есть приложение с полным закладом, разработанное в Spring Framework, и я бы не изменил код приложения (кроме введения каких-либо аннотаций). Я предпочел пойти с Multiverse 0.5. – Rahul
Вы можете использовать прослушиватель событий весны, чтобы узнать, совершена ли транзакция или откат, и приступить к мультиверсии соответственно. Я еще не пробовал это, но, полагаю, это должно сработать. Проблема будет заключаться в транзакциях с БД намного дольше, чем транзакции STM, и мы не предпочитаем транзакции, ожидающие так долго. –
Весной владельцем транзакции будут методы. Откат транзакций методами может быть определен на основе исключенного броска. Аналогично я думал, что аннотировать этот конкретный метод как транзакционный (предоставляемый multiverse stm), чтобы изменения состояния объекта были возвращены. Но когда я предоставил javaagent как аргумент виртуальной машины в eclipse и запустил приложение, я получил исключение как :: – Rahul