我正在学习Seam和JPA / Hibernate,虽然我可以找到一些关于如何使用Hibernate构建DAO类的例子但我对如何使用Seam做同样的事情感到有点困惑(或者即使是在所有必要的。)
我知道seam使用其对话来管理事务,所以我不(?)不必担心手动提交/回滚操作。
我还没有得到的是如何将EntityHome和EntityList对象扩展到seam-gen生成的对象之外,以创建DAO,这将为我提供我在应用程序中所需的细粒度操作/连接。
我错过了什么吗?
答案 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页面中使用它,你也可以在那里使用它,内置支持分页。
沃尔特