Spring TransactionTemplate setPropagationBehavior - PullRequest
1 голос
/ 31 августа 2011

Мне интересно, что именно setPropagationBehavior из TransactionTemplate делает.Кто что пропагандирует кому?Я вижу, что это хорошо задокументировано, но я не понимаю основную концепцию этого PropagationBehavior.

По умолчанию PROPAGATION_REQUIRED, так что же это значит?Сообщает ли шаблон (распространяет) об ошибках или наоборот?

Может кто-нибудь объяснить в общих чертах, что здесь происходит, я знаком с терминологией базы данных и функциональностью транзакций, ACID и так далее.

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 31 августа 2011

TransactionManager заботится о транзакциях в приложении.PropagationBehavior - это способ рассказать своему менеджеру, как вы хотите, чтобы транзакции вели себя.TransactionTemplate - это вспомогательный класс, упрощающий это для вас.

REQUIRED означает:

1.Если вызывающий метод уже находится в транзакции, он будет использовать ту же транзакцию

2.Если вызывающий метод находится в нетранзакцииобласть применения создаст новую транзакцию

РЕДАКТИРОВАТЬ: Я наткнулся на эту очень хорошую статью, посвященную весенним и многопоточным веб-приложениям.Я думаю, что вы должны прочитать это .

2 голосов
/ 31 августа 2011

Распространение не о распространении сбоев.REQUIRED означает: если уже выполняется транзакция, выполните работу (в обратном вызове шаблона) в текущей транзакции.Если транзакция не выполняется, запустите новую, выполните работу в обратном вызове, а затем зафиксируйте транзакцию (или откатите ее, если есть исключение времени выполнения).

Во всех случаях исключение времени выполнениявсегда распространяется на звонящего.Это также вызывает откат транзакции, даже если он не был запущен этим шаблоном.

...