Вы используете @Transcational
, когда одновременные вызовы вашего API могут влиять друг на друга.
Допустим, вы хотите добавить Person (вы извлекаете данные откуда-то, создаете новый Персона из данных и добавить ее в список персон). Давайте предположим, что для создания Person вам необходим атрибут partner
, который является другим Person.
Перед созданием Person вы должны найти партнера по Id somehwere и добавить его в новый атрибут Person partner
. Но что, если во время всех этих запросов partner
, который вы хотели добавить, где-то удаляется (скажем, в базе данных из-за какого-то другого запроса). В итоге у вас не будет запрошенного вами объекта.
Если вы используете @Transactional
Spring, то убедитесь, что все необходимые данные в безопасности, до тех пор, пока Транзакция не закончится. Как только он закончится, будет выполнен запрос на удаление от partner
, и тогда у вас будет логика удалить его из нового объекта Person . Но это произойдет позже.
Вы используете @Transactional
для обеспечения безопасности ваших «Транзакций».