Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为Seam/JPA(hibernate)创建DAO类?_Java_Jpa_Seam_Dao - Fatal编程技术网

Java 如何为Seam/JPA(hibernate)创建DAO类?

Java 如何为Seam/JPA(hibernate)创建DAO类?,java,jpa,seam,dao,Java,Jpa,Seam,Dao,我正在学习Seam和JPA/Hibernate,虽然我可以找到一些关于如何使用Hibernate构建DAO类的示例,但我对如何使用Seam做同样的事情有点困惑(或者即使这是必要的) 我知道seam使用其对话管理事务,因此我不必担心手动提交/回滚操作 我仍然不知道如何将EntityHome和EntityList对象扩展到seam gen生成的对象之外,以创建DAO,从而为我的应用程序提供所需的细粒度操作/联接 我错过什么了吗 我知道seam负责管理 使用会话的事务 所以我不必担心 提交/回滚 手动

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

我知道seam使用其对话管理事务,因此我不必担心手动提交/回滚操作

我仍然不知道如何将EntityHome和EntityList对象扩展到seam gen生成的对象之外,以创建DAO,从而为我的应用程序提供所需的细粒度操作/联接

我错过什么了吗

我知道seam负责管理 使用会话的事务 所以我不必担心 提交/回滚 手动操作

是的,您不必担心,如果出现异常,seam将自动执行回滚。在没有例外的情况下,提交也是一样。我认为您也可以通过seam注释手动控制这一点

DAO模式是在您需要将持久层与业务层分离时创建的。EntityHome和EntityList正是持久层。您不需要创建dao

从seam开始的最佳途径是研究seam软件包附带的示例。。参见DVD商店和预订等示例。他们很有帮助


另一个有用的东西是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>

u、 emailAddress=#{emailAddress}
然后在Java代码中,您可以执行以下操作:

@In
private EntityQuery<User> User_findByEmailAddress;

...
Contexts.getEventContext().set("emailAddress", emailAddress);
User user = User_findByEmailAddress.getSingleResult();
@In
私有实体查询用户\u findByEmailAddress;
...
Contexts.getEventContext().set(“emailAddress”,emailAddress);
User User=User_findByEmailAddress.getSingleResult();
如果您想在xhtml页面中使用它,还可以在其中使用它,并内置分页支持


沃尔特

谢谢你的意见!您的意思是,使用EntityHome和EntityList,我应该能够在应用程序中执行任何需要的持久性操作吗?或者您是否以任何方式扩展sean gen类?是的,使用entityHome进行更新、删除和插入,使用EntityList进行选择。但这只是对seam项目的一个建议,如果需要,您可以在任何seam组件中插入实体管理器。