快速业务通道

使用Java Persistence API与JavaServer Faces开发Web应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
Thomas F Mutdosch

类带上了注释@Entity,以向 JPA 指示该类是一个被映射的实体。所有已命名 的查询在实体上被添加了 NamedQuery 注释。这就使您不管在应用软件中的任何 地方,都能够根据它们的查询名来参考这些查询,您不必去担心实际的 Java Persistence Query Language (JPQL)语句。 这种方法让这些查询在您的应用 软件中具有很高的可重用性。如果您想要改变已命名查询自身的话,它能使您避 免更改所有的参考。

接下来,您可以看到“deptno”已经带上了@Id注释,意味着它就是主关键字 属性。Employee 对象的列表被标上了 OneToMany 注释,以让 JPA 运行时过程知 道,该区域是由一个关系填充的。

现在让我们来看看,您的 JPA Manager Beans 是怎样与实体进行对接的。图 20 在 Page Data View 视图下,给您一个关于 JPA Manager Beans 的概述。

图 20. JPA Manager Beans

使用Java Persistence API与JavaServer Faces开发Web应用 - 编程入门网

您将注意到创建,检索,更改以及删除(CRUD)操作,都已被生成 (createDepartment, deleteDepartment, updateDepartment),还有您已经指 定的所有查询方法,也已生成。Department 实体创建的每一个已命名查询,都将 会有一个与之相对应的查询方法。

列表 3 显示了 DepartmentManager 的 Java 代码。

列表 3. DepartmentManager 代码

@JPAManager(targetEntity=entities.Department.class) @SuppressWarnings("unchecked") public class DepartmentManager {    @PersistenceUnit    private EntityManagerFactory emf;    @Resource    private UserTransaction utx;    public DepartmentManager() {    }    @Action(Action.ACTION_TYPE.DELETE)    public String deleteDepartment(Department department) throws Exception {      EntityManager em = getEntityManager();      try {        utx.begin();        em.joinTransaction();        department = em.merge(department);        em.remove(department);        utx.commit();      } catch (Exception ex) {        try {          utx.rollback();        } catch (Exception e) {          ex.printStackTrace();          throw e;        }        throw ex;      } finally {        em.close();      }      return "";    }    @Action(Action.ACTION_TYPE.UPDATE)    public String updateDepartment(Department department) throws Exception {      EntityManager em = getEntityManager();      try {        utx.begin();        em.joinTransaction();        department = em.merge(department);        utx.commit();      } catch (Exception ex) {        try {          utx.rollback();        } catch (Exception e) {          ex.printStackTrace();          throw e;        }        throw ex;      } finally {        em.close();      }      return "";    }    @NamedQueryTarget("getDepartmentByLocation")    public List<Department> getDepartmentByLocation(String location) {      EntityManager em = getEntityManager();      List<Department> results = null;      try {        Query query = em.createNamedQuery ("getDepartmentByLocation");        query.setParame

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号