«Из любопытства, что не так с сохранением самого объекта в сеансе? Таким образом, мне не пришлось бы выполнять второй поиск в базе данных, чтобы снова найти объект». --TenJack
(вероятно, это должен быть новый вопрос StackOverflow)
Сохранение элемента в сеансе - плохая вещь - поскольку в момент переноса объекта модели (например, для добавления столбца или чего-либо подобного) данные в сеансе больше не являются действительным объектом типа модели. например, он будет иметь старый список атрибутов вместо нового ... и будет отображаться как недопустимый объект.
Вот почему лучше хранить только идентификатор - потому что вы получите свежий, правильно созданный экземпляр объекта из БД.