4

我想将 SEAM Framework 与 Hibernate 一起使用,但不想使用 EJB。我不能使用 EJB。

第一个问题是,我可以使用 EntityManager 吗?还是 EntityManager 是 EJB 的一部分?

如何获得在我的 SEAM 组件中使用 Hibernate 的权限?

谢谢,菲利普

4

3 回答 3

5

使用 Seam,您可以使用 Hibernate 或 JPA (EntityManager)。它与 EJB 无关。如果你愿意,你可以使用普通的 POJO。

如何获得在我的 SEAM 组件中使用 Hibernate 的权限?

这里是休眠设置WEB-INF/components.xml

会话工厂设置

<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}"/>

要注入您的休眠会话,您可以使用

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

请记住,Seam 可以与任何 MVC 框架一起使用,尽管它默认使用 Java Server Faces。如果需要,您甚至可以创建自己的 MVC 功能。看看JBoss Seam Tuto

于 2010-08-09T15:54:03.457 回答
0

Seam 网站是一个很好的起点。有很多关于框架的文档。

从常见问题解答:

我必须使用 EJB 3 才能使用 Seam 吗?

首先,了解 EJB 3 包含会话 bean、消息驱动 bean 和 Java Persistence API 很重要。Seam 迎合所有三种组件类型,使其更易于使用并提供有价值的增强功能。但是Seam 对非EJB 编程模型有并行支持,最显着的是JavaBeans 和本机Hibernate。因此,选择使用什么取决于您。Seam 的最大优势在于它提供了跨 EJB 和非 EJB 模型的统一架构。这意味着一旦你学会了如何使用一个,你就会自动知道如何使用另一个。

于 2010-08-09T14:48:59.047 回答
0

获取 Hibernate Session 的另一种方法是使用 EntityManager 上的委托方法:

Session session = (Session)entityManager.getDelegate();
于 2012-03-13T08:24:25.057 回答