2

我正在学习 Seam 和 JPA/Hibernate,虽然我可以找到一些关于如何使用 Hibernate 构建 DAO 类的示例,但我对如何使用 Seam 做同样的事情有点困惑(或者即使这完全有必要) .

我确实知道 seam 使用它的对话来管理事务,所以我不必(?)担心手动提交/回滚操作。

我仍然没有得到的是如何将 EntityHome 和 EntityList 对象扩展到 seam-gen 生成的对象之外,以创建 DAO,从而为我提供我在应用程序中需要的细粒度操作/连接。

我错过了什么吗?

4

2 回答 2

2

我确实知道 seam 使用它的对话来管理事务,所以我不必(?)担心手动提交/回滚操作。

是的,你不用担心,如果有异常,seam 会自动回滚。当没有异常时,提交也是一样的。我认为您也可以使用接缝注释手动控制它。

当您需要将持久层与业务层分开时,就会创建 DAO 模式。EntityHome 和 EntityList 正是持久层。你不需要创建一个 dao。

开始使用 seam 的最佳途径是研究 seam 包附带的示例 .. 参见 dvdstore 和 booking 之类的示例。他们很有帮助

问候,

于 2009-10-27T14:34:32.550 回答
1

另一个有用的东西是 EntityQuery 或 HibernateEntityQuery。您可以在 XML 中指定查询,然后可以在整个应用程序中将它们作为 Seam 组件引用。尽管我在 JPA 中使用了这个非常受欢迎的 NamedQuery,但我认为这不是标准做法。

<framework:entity-query name="User_findByEmailAddress" ejbql="SELECT u FROM User u">
<framework:restriction>
   <value>u.emailAddress = #{emailAddress}</value>
</framework:restriction>
</framework:entity-query>

然后在您的 Java 代码中,您可以执行以下操作:

@In
private EntityQuery<User> User_findByEmailAddress;

...
Contexts.getEventContext().set("emailAddress", emailAddress);
User user = User_findByEmailAddress.getSingleResult();

如果你想在你的 xhtml 页面中使用它,你也可以在那里使用它并内置对分页的支持。

沃尔特

于 2009-12-31T16:59:09.583 回答