如何为Seam / JPA(休眠)创建DAO类?

时间:2009-10-27 05:03:02

标签: java jpa seam dao

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

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

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

我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

  

我知道煤层管理着   使用其对话的交易   所以我不必(?)担心   承诺/回滚   手动操作。

是的,您不必担心它,如果有异常,seam会自动进行回滚。没有异常时提交的内容相同。我认为您也可以使用seam注释手动控制它。

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

以缝开始的最佳路径是研究缝包附带的示例..请参阅dvdstore和预订等示例。他们非常有帮助

此致

答案 1 :(得分: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页面中使用它,你也可以在那里使用它,内置支持分页。

沃尔特

相关问题