Różnice między Nowym a zagnieżdżonym rozmnażaniem w transakcjach wiosennych

Nie rozumiem różnicy w zachowaniu pomiędzy PROPAGATION_REQUIRES_NEW i PROPAGATION_NESTED Polityką propagacji. Wydaje mi się, że w obu przypadkach obecny proces jest rollbacked, ale nie cała transakcja. Jakieś wskazówki?

Author: Alexis Dufrenoy, 2012-09-12

3 answers

Zobacz ten link: PROPAGATION_NESTED a PROPAGATION_REQUIRES_NEW? Juergen Hoeller wyjaśnij to bardzo dobrze

PROPAGATION_REQUIRES_NEW rozpoczyna nową, niezależną" wewnętrzną " transakcję dla danego zakresu. Ta transakcja zostanie zatwierdzona lub wycofana całkowicie niezależne od transakcji zewnętrznej, posiadające własne zakres izolacji, własny zestaw zamków itp. Transakcja zewnętrzna będzie się zawieszone na początku wewnętrznego i wznowione po wewnętrzny się skończył. ...

PROPAGATION_NESTED z drugiej strony rozpoczyna transakcję "zagnieżdżoną", co jest prawdziwą subtransakcją istniejącego. Co się stanie jest to, że savepoint zostanie podjęta na początku zagnieżdżone transakcja. Jeśli zagnieżdżona transakcja nie powiedzie się, wrócimy do ten punkt zbawczy. Zagnieżdżona transakcja jest częścią zewnętrznej transakcji, więc zostanie ona dokonana dopiero na końcu zewnętrznej transakcja. ...

 76
Author: Ralph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-12 15:11:02

PROPAGATION_REQUIRES_NEW: używa całkowicie niezależnej transakcji dla każdego dotkniętego zakresu transakcji. W takim przypadku podstawowe transakcje fizyczne są różne i dlatego mogą zostać zatwierdzone lub wycofane niezależnie, przy czym na transakcję zewnętrzną nie ma wpływu status wycofania transakcji wewnętrznej.

PROPAGATION_NESTED: używa pojedynczej fizycznej transakcji z wieloma punktami zapisu, do których może wrócić. Takie częściowe cofnięcia pozwalają wewnętrznemu zakresowi transakcji wywołać wycofanie ze względu na jego zakres, przy czym transakcja zewnętrzna jest w stanie kontynuować transakcję fizyczną, mimo że niektóre operacje zostały wycofane. To ustawienie jest zazwyczaj mapowane na punkty zapisu JDBC, więc będzie działać tylko z transakcjami zasobów JDBC.

Sprawdź dokumentacja sprężyny

 11
Author: Nandkumar Tekale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-12 14:55:22

Proszę znaleźć różnicę

1.) Use of NESTED Transaction

Wykonaj wewnątrz zagnieżdżonej transakcji JEŚLI ISTNIEJE bieżąca transakcja, zachowaj się jak PROPAGATION_REQUIRED else. Zagnieżdżona transakcja jest obsługiwana przez Spring

2.) Wykorzystanie wymaganej transakcji Obsługuj bieżącą transakcję, Utwórz nową, jeśli żadna nie istnieje. . Oznacza to dla domeny bankowej, takiej jak wypłata, wpłata, aktualizacja transakcji

3.) Użycie Utwórz nową transakcję i zawieś bieżącą transakcję, jeśli jeden istnieje.

 -3
Author: Ankit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-04 05:45:42