Я ищу для шаблона/метод сделать чисто решить следующую задачу:Как смешивать постоянное и переходное состояние объекта домена?
В приложении отображения на экране (различная информация отображается на ЖК-экранах в общественных местах), у меня есть Hibernate настойчивые POJOs, которые могут быть созданы и обновлены в части администрирования моего приложения.
В части «display», которая доступна только для чтения, я использую эти объекты. Они должны всегда быть в курсе состояния, но они также имеют переходное состояние (которое никогда не хранится в БД), для которого продолжительность жизни - это сеанс всего пользователя (HTTP) (может длиться целый день или более) и , который относится к каждому сеансу/пользователю (здесь «пользователь» - это экран).
Как (чисто) комбинировать оба состояния для поддержания состояния переходного процесса в памяти (в сеансе HTTP), при регулярном обновлении постоянного состояния из БД? Использовать тот же класс и выполнять Hibernate session.refresh() при необходимости? Храните оба состояния в разных классах и свяжите их, например. с идентификатором? Декоратор?
Некоторые из полей являются постоянными и доступны только для чтения в этой части приложения. Некоторые другие не являются постоянными (так временно), но представляют собой (постоянно изменяющееся) состояние, которое охватывает сеанс пользователя и отличается для каждого сеанса. Надеюсь, это так ясно! –
Если поля «переходные» не являются постоянными, но являются специфическими для сеанса, то вам следует рассмотреть возможность использования сессионных благ состояния (EJB). Таким образом, сервер позаботится о доставке конкретного SFSB клиенту, и их можно очистить, когда сеанс истекает (или закрыт). Единственное, что получилось, состоит в том, что, похоже, у вас есть эти две информации в одном экземпляре. Я бы сказал, что это не идеально, поскольку вы, вероятно, смешиваете проблемы. Но я не могу сказать этого, не зная специфики вашей проблемы. – jpkrohling
Спасибо! Но я не переключаюсь на EJB сейчас :) Мое решение на данный момент: Храните Hibernate POJO в сеансе HTTP. Это поддерживает «переходное» состояние через сеанс пользователя. Затем я вызову session.refresh hibernate, когда мне нужно перечитать постоянное состояние. Поскольку я использую другой сеанс спящего режима для каждого HTTP-запроса, у меня может быть несколько экземпляров одного и того же постоянного объекта, поскольку постоянный объект уникален только в области сеанса спящего режима. Я отвечу на ваш ответ, но я не могу согласиться с этим, извините ... –