Если это фактический объект, тогда да, вы изменяете версию, поддерживаемую сеансом, и ее значения будут сохранены.
Если это не ссылочный тип, такой как String, то вы должны ссылаться на фактическое значение сеанса, чтобы изменить его (то есть: сеанс ["ключ"] = значение).
Однако я бы предостерег вас от хранения реальных объектов в сессии. Сессия работает путем сериализации и десериализации значений при каждой загрузке страницы . Чем больше вы включаете в сеанс, тем больше работы должен выполнить фреймворк, прежде чем даже начнет выполнять вашу страницу.
Из-за того, как это работает, вы должны помещать в сеанс только те значения, которые вам действительно нужны по всему сайту.
Прежде чем даже подумать о том, чтобы заняться чем-то сессией, я спрашиваю себя:
- Это что-то нужно для всего сайта или близко к нему?
- Время загрузки этой информации прямо из базы данных по мере необходимости больше, чем извлечение ее из памяти веб-серверов?
- Сбалансирована ли нагрузка на этот объект или в будущем возможна балансировка нагрузки?
Если 1 - да, тогда использование сеанса - "возможно"
Если 2 - это да, тогда сессия также может быть, но я бы, вероятно, использовал другой механизм кэширования.
Если 3 - «да», то я вообще не использую сессию (и полностью отключаю ее). Для балансировки нагрузки требуется сервер состояния сеанса, который обычно является сервером SQL. Это возвращает нас к первоначальной проблеме с сессией: значения загружаются и сохраняются для каждого запроса страницы.