Помогите мне понять SEAM и Hibernate?

Я хочу использовать SEAM Framework с Hibernate, но не хочу использовать EJB. Я не могу использовать EJB.

Первый вопрос: могу ли я использовать EntityManager? или EntityManager является частью EJB?

Как я могу получить доступ к использованию Hibernate в моем компоненте SEAM?

Спасибо Филип

3 ответа

Решение

С Seam вы можете использовать либо Hibernate, либо JPA (EntityManager). Это работает независимо от EJB. Вы можете использовать обычный POJO, если хотите.

Как я могу получить доступ к использованию Hibernate в моем компоненте SEAM?

Здесь идет настройки Hibernate WEB-INF/components.xml

НастройкиSessionFactory

<persistence:hibernate-session-factory name="sessionFactory" cfg-resource-name="app.cfg.xml"/>

Где app.cfg.xml находится в корне пути к классам

Настройкисеанса

<persistence:managed-hibernate-session name="session" hibernate-session-factory="#{sessionFactory}" auto-create="true"/>

НастройкиTransactionManagement

<!--It takes care of calling begin and commit in the underlying Transaction API-->
<!--Here a Hibernate Transaction API-->
<tx:hibernate-transaction session="#{session}"/>

Чтобы добавить сеанс Hibernate, вы можете использовать

/**
  * Seam lookup Seam enabled components Through its referenced name - session 
  */
private @In Session session;

Имейте в виду, что Seam работает с любой средой MVC, хотя по умолчанию он использует Java Server Faces. Вы можете создать даже свои собственные возможности MVC, если хотите. Посмотрите на JBoss Seam Tuto

Еще один способ получить Hibernate Session - использовать метод делегата в EntityManager:

Session session = (Session)entityManager.getDelegate();

Сайт Seam - хорошее место для начала. Там много документации по фреймворку.

Из FAQ:

Нужно ли использовать EJB 3 для использования Seam?

Во-первых, важно понимать, что EJB 3 включает сессионные компоненты, компоненты, управляемые сообщениями, и API персистентности Java. Шов обслуживает все три типа компонентов, облегчая их использование и обеспечивая ценные улучшения. Но Seam имеет параллельную поддержку не программной модели EJB, в частности JavaBeans и нативного Hibernate. Таким образом, выбор того, что использовать, зависит от вас. Самая большая сила Seam в том, что он обеспечивает унифицированную архитектуру как для моделей EJB, так и для моделей без EJB. Это означает, что как только вы научитесь использовать один, вы автоматически узнаете, как использовать другой.

Другие вопросы по тегам