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

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

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

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

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


person Phil    schedule 09.08.2010    source источник


Ответы (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"/>

Настройки управления транзакциями

<!--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.

person Arthur Ronald    schedule 09.08.2010
comment
@Phil Вы можете использовать любую технологию сохранения, которую хотите. Не только Hibernate или JPA - person Arthur Ronald; 09.08.2010

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

Из часто задаваемых вопросов:

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

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

person Fernando Briano    schedule 09.08.2010

Другой способ получить сеанс Hibernate — использовать метод делегата в EntityManager:

Session session = (Session)entityManager.getDelegate();
person Ben    schedule 13.03.2012