【发布时间】:2011-03-27 08:24:07
【问题描述】:
我想将 SEAM Framework 与 Hibernate 一起使用,但不想使用 EJB。我不能使用 EJB。
第一个问题是,我可以使用 EntityManager 吗?还是 EntityManager 是 EJB 的一部分?
我如何才能在我的 SEAM 组件中使用 Hibernate?
谢谢,菲利普
【问题讨论】:
标签: hibernate seam ejb seam-conversation seam2
我想将 SEAM Framework 与 Hibernate 一起使用,但不想使用 EJB。我不能使用 EJB。
第一个问题是,我可以使用 EntityManager 吗?还是 EntityManager 是 EJB 的一部分?
我如何才能在我的 SEAM 组件中使用 Hibernate?
谢谢,菲利普
【问题讨论】:
标签: hibernate seam ejb seam-conversation seam2
使用 Seam,您可以使用 Hibernate 或 JPA (EntityManager)。它与 EJB 无关。如果你愿意,你可以使用普通的 POJO。
我如何才能在我的 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 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 website 是一个很好的起点。有很多关于框架的文档。
来自常见问题解答:
Do I have to use EJB 3 to use Seam?
首先,了解这一点很重要 EJB 3 包含会话 bean, 消息驱动 bean 和 Java 持久性 API。 Seam 满足所有人的需求 三种组件类型,使它们 更易于使用并提供有价值的 增强功能。但Seam有平行 支持非 EJB 编程 模型,最著名的是 JavaBeans 和 本机休眠。所以选择 使用什么取决于你。接缝的 最大的优势在于它提供 一个统一的架构跨越两个 EJB 和非 EJB 模型。这意味着 一旦你学会了如何使用它,你 自动知道如何使用 其他。
【讨论】:
获取 Hibernate Session 的另一种方法是使用 EntityManager 上的委托方法:
Session session = (Session)entityManager.getDelegate();
【讨论】: