Бэк JSF и сущность гибернации одного класса? - PullRequest
0 голосов
/ 13 ноября 2010

Могу ли я использовать один и тот же класс для компонента поддержки JSF и спящего объекта? Я предполагал, что смогу, но когда я выполняю некоторую проверку JSF на базовом компоненте, поля не устанавливаются (т. Е. Ноль).

Я что-то упускаю, чтобы эти две технологии хорошо играли вместе? Или это просто не практика использовать один и тот же класс для обоих?

Спасибо за любую помощь.

Джо

Ответы [ 6 ]

2 голосов
/ 13 ноября 2010

Технически я не уверен, но логически это не имеет особого смысла. Вы beibernate bean связаны с записями базы данных, в то время как ваши bean-компоненты JSF связаны с пользовательскими сессиями. Я думаю, что попытка смешать два в одном классе не вызовет ничего, кроме путаницы.

0 голосов
/ 18 апреля 2015

Эта тема стареет, но тема по-прежнему актуальна. Работая над большим веб-приложением с JSF и hibernate, я бы поддержал Божо и сказал, что лучше использовать только 1 набор классов, если это возможно.

Хотя службы управления сеансами и транзакциями могут быть немного сложны в настройке; в итоге вы получите архитектуру, которая:

  • Работает лучше. Отображение между DTO и сущностями может быть связано с большими затратами ресурсов, особенно если вы используете стороннюю библиотеку, которая использует рефлексию, как dozer. Кроме того, hibernate имеет очень эффективную систему кэширования, которую вы теряете, если систематически сопоставляете родителей / детей ваших сущностей
  • более ремонтопригоден. 1 набор классов проще в управлении, чем 2, плюс с помощью аннотаций гибернации вы можете легко определить, какие поля управляются спящим, а какие нет
  • Весы лучше. (Производительность + ремонтопригодность)
0 голосов
/ 02 декабря 2010

Разве это не анти-паттерн - использовать DTO (Data Transfer Object) в первую очередь?Hibernate возвестил об удалении любого разделения объектов модели предметной области на уровне представления и уровне сохранения.Только с прокси-объектами Hibernate в механизме сервлета вы можете гарантировать грязную проверку.В противном случае, для обновления постоянных объектов с помощью DTO придется поддерживать сантехнические коды.

Раньше я не занимался разработкой JSF, но сейчас я делаю это и спрашиваю то жевопрос.У меня есть ощущение, что, вероятно, лучше использовать объекты JPA в сочетании с face-config.xml, а не аннотацию @ManagedBean в сочетании с аннотациями JPA.

0 голосов
/ 14 ноября 2010

Возможно, но лучше попросить каркас, чтобы сделать работу по интеграции за вас. Используйте JBoss Seam, и он делает то, что вы хотите, и даже больше.

0 голосов
/ 13 ноября 2010

В большинстве случаев используйте один и тот же класс. Такие фреймворки, как richfaces, даже предоставляют поддержку проверки AJAX на основе javax.validation аннотаций в классе.

В большинстве случаев это будет безопасный и простой в обслуживании подход.

В более редких случаях вы можете создать специальный объект для вида, но это не так часто.

Хотя разделение кажется хорошей идеей, на практике вы обычно получаете много пар идентичных классов - признак чрезмерного проектирования.

Если ваше управление сессиями и транзакциями четко определено, у вас не должно быть проблем.

0 голосов
/ 13 ноября 2010

Из того, что я знаю, вы можете использовать один класс для обеих целей, но я не уверен, и причина этого в том, что я лично никогда не использую его таким образом, поскольку это плохая практика кодирования.Во-первых, как упоминалось в JOTN, классы сущностей отражают вашу БД, а бины-компоненты связаны с представлением.Во-вторых, и для меня это самая важная причина, поля в классе сущности и компоненте поддержки не должны быть одинаковыми!Что делать, если вам нужны поля пароля и «пароль для повторного ввода» в компоненте поддержки и только одно в классе сущности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...