Сравнение @ModelAttribute vs @SessionAttributes действительно является архитектурным суждением, то есть: stateful vs stateless.
Существует третий вариант сохранения состояния в форме. Это означает, что при нажатии кнопки данные, загруженные в исходный метод get, отправляются в сообщение, поэтому его не нужно перезагружать.
И четвертый вариант для хранения в куки.
Есть много вопросов, которые необходимо учитывать один раз сессии:
- в нагрузки сбалансированной архитектуры, то как сеансы, пересылаемых между серверами, или пользователь хранится только на один сервер (липкие сессии)
- что произойдет, если сервер перезапускается (постоянный сеанс)?
- Когда заканчивается сессия и что происходит, когда она истекает?
Даже если у вас есть архитектура для управления сеансами, ее использование должно быть сведено к минимуму, так как им требуется системная память, тогда как для состояния, хранящегося в базе данных, требуется только дисковое пространство и состояние, хранящееся на клиенте требуется только клиентская память.
Существует также безопасность для рассмотрения, состояние, хранящееся на сервере, более безопасно, чем состояние, сохраненное на стороне клиента.
Solubris, спасибо за такое подробное объяснение !!! – curious1