Лучшая стратегия для множественного CRUD с помощью jsf [закрыто]
Вопрос
в моей компании мы разрабатываем ERP-подобное приложение, используя java и jsf, на данный момент команда разработчиков определила около 20 объектов, каждый с различными свойствами, обычно мы создаем 20 страниц CRUD, есть ли лучший способ сделать это?, мы используем hibernate для доступа к БД, поэтому нам пришла в голову идея единого DAO для этой части системы, вы сталкивались с подобной ситуацией?что вы думаете по этому поводу?
Решение
Вы могли бы рассмотреть возможность создания кода для этих 20 экранов, подобно тому, как это делают строительные леса в Ruby.Что касается DAO, вы могли бы перенести операции CUD в некоторый общий IBusinessObjectDao, оставив конкретные операции R (запросы по различным параметрам) для конкретных реализаций DAO.
Другие советы
Вам действительно стоит присмотреться к Seam.У него есть функция, называемая Шов-Ген это приведет к обратному проектированию всех CRUD-страниц вашего приложения из базы данных.Вы можете отредактировать шаблоны Seam-Gen (основанные на Freemarker), чтобы настроить страницы, которые будут сгенерированы по вашему вкусу.
Я использую плагин Eclipse Клей Адзурри смоделировать мою базу данных и сгенерировать DDL.Затем я запускаю Seam-Gen, и через несколько секунд у вас есть запущенное приложение.Это очень удобная комбинация.
Я знаю, что уже поздно, но я думаю, что мой маленький фреймворк идеально подошел бы к этой ситуации.Проверьте http://code.google.com/p/happyfacescrud/ .В нем есть готовый поиск, пользовательские компоненты, которые распознают тип данных объекта, отложенная модель данных и гибкость, которую не могут предложить генераторы кода.Вот небольшой пример того, как будет выглядеть страница с отложенной таблицей данных и поиском:
<hf:searchPanel columns="4" backingBean="#{accountBean}">
<hf:searchField label="#{messages['account.accountNumber']}" field="accountNumber" />
<hf:searchField label="#{messages['account.active']}" field="active" isMessage="true" />
<hf:searchEntityField label="#{messages['account.customer']}" field="customer" childField="name" popup="true" />
<hf:searchField label="#{messages['account.openingDate']}" field="openingDate" rangeSearch="false" />
</hf:searchPanel>
<hf:dataList label="#{messages['account.search.results']}" backingBean="#{accountBean}">
<hf:column label="#{messages['account.accountNumber']}" field="accountNumber" />
<hf:column label="#{messages['account.active']}" field="active" isMessage="true" />
<hf:column label="#{messages['account.customer']}" field="customer" childField="name" entityView="/pages/customerEdit.xhtml" popupFields="email,phone,address" />
<hf:column label="#{messages['account.openingDate']}" field="openingDate" isDate="true" />
<hf:actionsColumn />
</hf:dataList>