Мне очень понравилась рамка приложения JBoss Seam. Поскольку понятие инъекции/выброса и тесное интеграция между JSF/EJBs/JPA относительно ограничено среди фреймворков Java-приложений, я искал некоторые хорошие ресурсы для шаблонов проектирования и лучших практик для использования этой структуры. Я вылил примеры и несколько книг по этому вопросу. Тем не менее, меня больше интересуют модели реального мира, которые сравниваются с традиционными шаблонами проектирования J2EE. Например, традиционные DAO или EntityHome/EntityQuery. Где должна выполняться бизнес-логика? В классах Action? Или в специализированных классах обслуживания? Я бы очень признателен за понимание, которое могут дать разработчики Seam. Благодаря!JBoss Seam Design Patterns?
ответ
Существует много полезных шаблонов, которые вы можете использовать.
Традиционный подход
view >> controller >> service >> domain
Что можно перевести
/**
* view
*/
<h:commandButton value="Deposit" action="#{accountController.removeAccount(account)}"/>
/**
* controller
*/
@Name("accountController")
public class AccountController implements Serializable {
/**
* Usually a plain POJO or EJB
*/
private @In AccountService accountService;
public void removeAccount(Account account) {
accountService.removeAccount(account);
}
}
/**
* service
*/
@Name("accountService")
public class AccountServiceImpl implements AccountService {
private @In EntityManager entityManager;
public void removeAccount(Account account) {
entityManager.remove(account);
}
}
Если у вас есть какие-то действия , которая должна работать с компонентами JSF на серверной стороне, использовать контроллер, как показано выше может быть хорошей идеей
Вы также можете использовать
view >> service >> domain
Это в основном Такой же подход показан выше , но без контроллера
или с помощью встроенного медиатора шаблона с помощью EntityHome/EntityQuery
view >> domain
Зарегистрируйте свой EntityHome следующим образом /WEB -INF/components.xml
<framework:entity-home name="accountHome" entity-class="br.com.ar.seam.Account"/>
Теперь вы можете создать псевдоним путем не используя ФАБРИКА элемент
<factory name="account" value="#{accountHome.instance}"/>
/**
* view
*
* Notice account will be evaluated as accountHome.instance
*/
<h:commandButton value="Deposit" action="#{account.remove}"/>
ничего другого. Имейте в виду, при использовании Либо EntityHome (JPA) или HibernateEntityHome (Hibernate) обычно требуется, чтобы переопределить некоторые методы, чтобы улучшить производительность следующим
@Name("accountHome")
public class AccountHome extends EntityHome<Account> {
/**
* Override any method you want right here
*/
}
О бизнес-логики ??? Вы можете поместить его в свой уровень обслуживания или использовать подход, основанный на домене. См. here, который подходит лучше всего, что вы хотите
Тестирование: использование компонентов, связанных с швом. Взгляните на Seam примеры каталоги Чтобы получить информацию о том, как вы можете выполнить Тестирование без развертывания
Если возможно, используйте seam-gen. Чтобы создать проект. Книга Seam в книге действий, глава 2, может дать хорошее представление о том, как запустить функции seam-gen. внимательно прочитал.Любой шов поколения создается проект может быть открыт и испытано в NetBeans и Eclipse,
компонентов JSF: Посмотрите на here
Существует еще: Не используйте @ Out-jection больше. Вместо этого используйте @Factory. @ Out-ject будет устаревать в пользу метода @Factory.
Думает запросы лучше хранятся внутри внешний файл, так как
- Читает
- Это ремонтопригодно
Как следует
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<query name="GIFT_CARDS_WITH_BUYER">
<![CDATA[
from
GiftCard c
left join fetch
c.buyer
where
c.recipientNotificationRequested = 1
]]>
</query>
<query name="GIFT_CARDS_WITHOUT_NO_RELATIONSHIP">
<![CDATA[
from
GiftCard
]]>
</query>
</hibernate-mapping>
Nice один, дон» t
Другой ресурс идет здесь (формат PDF)
- 1. CUDA Design Patterns
- 2. Redux и Design Patterns
- 3. UI Design Patterns
- 4. Java Design Patterns Quiz
- 5. Design Patterns, Multiple Inheritance
- 6. Custom Providers & Design Patterns
- 7. Design Layout/Patterns
- 8. Pro Javascript Design Patterns errata?
- 9. OO Design Patterns with Perl
- 10. MVC 3/Design Patterns issue
- 11. Design Patterns: Фабрика и Repository
- 12. перепев: Учет Software Design Patterns
- 13. Book for Anti Design Patterns
- 14. JBoss Seam + jsf javax.ejb.EJBTransactionRolledbackException «
- 15. OSGI - Hibernate + JBoss Seam
- 16. JBoss Seam - ViewExpiredException
- 17. JBoss Seam tutorials
- 18. Ошибка развертывания jboss seam
- 19. Использование JBoss Web SingleSignOn с JBoss Seam
- 20. Зачем использовать @Transactional Jboss Seam
- 21. Невозможно создать JBoss Seam EntityManager
- 22. Обрезка входов в JBoss Seam
- 23. Seam 2 с Jboss 7
- 24. Ограничения EntityQuery в JBoss Seam
- 25. JavaScript pass by reference design patterns
- 26. Design Patterns (или методы) для Масштабируемости
- 27. WPF Desktop application and design patterns
- 28. Проекты SEAM работают в JBoss AS?
- 29. Можно ли использовать Seam в сервисе JBoss?
- 30. Трюки для ускорения цикла отладки Jboss Seam
Wow! Теперь это подробный ответ. Большое спасибо за понимание! – Shadowman
Справа, Артур - парней здесь :) – BalusC
Хороший ответ. Но я бы держался подальше от Seam Application Framework. (EntityHome, EntityQuery и т. Д.) –