我想将 SEAM Framework 与 Hibernate 一起使用,但不想使用 EJB。我不能使用 EJB。
第一个问题是,我可以使用 EntityManager 吗?还是 EntityManager 是 EJB 的一部分?
如何获得在我的 SEAM 组件中使用 Hibernate 的权限?
谢谢,菲利普
我想将 SEAM Framework 与 Hibernate 一起使用,但不想使用 EJB。我不能使用 EJB。
第一个问题是,我可以使用 EntityManager 吗?还是 EntityManager 是 EJB 的一部分?
如何获得在我的 SEAM 组件中使用 Hibernate 的权限?
谢谢,菲利普
使用 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
Seam 网站是一个很好的起点。有很多关于框架的文档。
从常见问题解答:
首先,了解 EJB 3 包含会话 bean、消息驱动 bean 和 Java Persistence API 很重要。Seam 迎合所有三种组件类型,使其更易于使用并提供有价值的增强功能。但是Seam 对非EJB 编程模型有并行支持,最显着的是JavaBeans 和本机Hibernate。因此,选择使用什么取决于您。Seam 的最大优势在于它提供了跨 EJB 和非 EJB 模型的统一架构。这意味着一旦你学会了如何使用一个,你就会自动知道如何使用另一个。
获取 Hibernate Session 的另一种方法是使用 EntityManager 上的委托方法:
Session session = (Session)entityManager.getDelegate();