Уже есть несколько вопросов по теме, но никакой ответ вообще не дает аргументов, чтобы объяснить, почему мы не должны создавать Spring MVC-контроллер Transactional
. См:
Итак, почему?
- Существуют ли непреодолимые технические проблемы?
- Есть ли архитектурные проблемы?
- Есть ли проблемы с производительностью/тупиком/ concurrency?
- Иногда требуется несколько отдельных транзакций? Если да, какие варианты использования? (Мне нравится упрощающий дизайн, который вызывает сервер либо полностью преуспевает, либо полностью терпит неудачу. Это звучит очень стабильно).
Фон: Я работал несколько лет назад в команде на довольно большом ПО ERP, реализованном в С#/NHibernate/ Spring.Net. Поворот на сервер был точно реализован следующим образом: транзакция была открыта перед вводом любой логики контроллера и была завершена или отменена после выхода из контроллера. Сделка управлялась в рамках, чтобы никто не заботился об этом. Это было блестящее решение: стабильное, простое, только несколько архитекторов должны были заботиться о проблемах с транзакциями, остальная часть команды только что реализовала функции.
С моей точки зрения, это лучший дизайн, который я когда-либо видел. Поскольку я пытался воспроизвести тот же дизайн с помощью Spring MVC, я вступил в кошмар с проблемами ленивой загрузки и транзакций и каждый раз, когда тот же ответ: не делайте контроллер транзакционным, но почему?
Заранее благодарю за ваши обоснованные ответы!