2010-12-14 3 views
1

Я ищу для шаблона/метод сделать чисто решить следующую задачу:Как смешивать постоянное и переходное состояние объекта домена?

В приложении отображения на экране (различная информация отображается на ЖК-экранах в общественных местах), у меня есть Hibernate настойчивые POJOs, которые могут быть созданы и обновлены в части администрирования моего приложения.

В части «display», которая доступна только для чтения, я использую эти объекты. Они должны всегда быть в курсе состояния, но они также имеют переходное состояние (которое никогда не хранится в БД), для которого продолжительность жизни - это сеанс всего пользователя (HTTP) (может длиться целый день или более) и , который относится к каждому сеансу/пользователю (здесь «пользователь» - это экран).

Как (чисто) комбинировать оба состояния для поддержания состояния переходного процесса в памяти (в сеансе HTTP), при регулярном обновлении постоянного состояния из БД? Использовать тот же класс и выполнять Hibernate session.refresh() при необходимости? Храните оба состояния в разных классах и свяжите их, например. с идентификатором? Декоратор?

ответ

1

Не уверен, что я понимаю. Если объект доступен только для чтения, какая информация является временной? Если объект доступен только для чтения, он всегда будет одинаковым для всех сеансов. Может быть, вы имеете в виду, что объект не доступен только для чтения, но он не будет сохранен на сервере?

+0

Некоторые из полей являются постоянными и доступны только для чтения в этой части приложения. Некоторые другие не являются постоянными (так временно), но представляют собой (постоянно изменяющееся) состояние, которое охватывает сеанс пользователя и отличается для каждого сеанса. Надеюсь, это так ясно! –

+0

Если поля «переходные» не являются постоянными, но являются специфическими для сеанса, то вам следует рассмотреть возможность использования сессионных благ состояния (EJB). Таким образом, сервер позаботится о доставке конкретного SFSB клиенту, и их можно очистить, когда сеанс истекает (или закрыт). Единственное, что получилось, состоит в том, что, похоже, у вас есть эти две информации в одном экземпляре. Я бы сказал, что это не идеально, поскольку вы, вероятно, смешиваете проблемы. Но я не могу сказать этого, не зная специфики вашей проблемы. – jpkrohling

+0

Спасибо! Но я не переключаюсь на EJB сейчас :) Мое решение на данный момент: Храните Hibernate POJO в сеансе HTTP. Это поддерживает «переходное» состояние через сеанс пользователя. Затем я вызову session.refresh hibernate, когда мне нужно перечитать постоянное состояние. Поскольку я использую другой сеанс спящего режима для каждого HTTP-запроса, у меня может быть несколько экземпляров одного и того же постоянного объекта, поскольку постоянный объект уникален только в области сеанса спящего режима. Я отвечу на ваш ответ, но я не могу согласиться с этим, извините ... –

Смежные вопросы