Мы используем Wicket с Hibernate в фоновом режиме.
В рамках нашего пользовательского интерфейса у нас довольно продолжительные разговоры, охватывающие несколько запросов, прежде чем обновленная информация будет записана обратно в базу данных.
Чтобы избежать ошибок гибернации с отсоединенными объектами, мы теперь используем объекты-значения для передачи информации из сервисного слоя в Wicket.
Однако теперь мы получаем взрыв почти одинаковых объектов:
например.
- Ответ (сопоставленная сущность сохранена в спящем режиме)
- AnswerVO (неизменяемое значение объекта)
- AnswerModel (изменяемый компонент в домене сеанса)
- Модель калитки в обтекателе
- и обычно это помещается в CompoundPropertyModel
Эта сантехника становится экспоненциально хуже, когда в объекты вовлечены коллекции других объектов.
Должен быть лучший способ организовать это.
Может кто-нибудь поделиться советами, как сделать это менее обременительным?
Может быть, сделать объекты-значения изменяемыми, чтобы мы могли убрать необходимость в компоненте поддержки Seaprate в Wicket?
Используйте бины сущностей, но абсолютно уверены, что они оторваны от спящего режима. (легче сказать, чем сделать)?
Какие-нибудь другие хитрости или шаблоны?