这里介绍Hibernate DAO类,在Action中通过DAO查询出所有的记录,然后加到session或request对象中,传到客户端,由JSP进行分页。这种方法对于在数据量少的时候很方便,也不影响速度。

本文向我们介绍Hibernate DAO类,或许好多人还不了解Hibernate DAO类,没有关系,看完本文你必定有不少收成,期望本文能教会你更多东西。

Hibernate DAO类概述(dao和hibernate)  DAO类 第1张

在Struts分页有两种结构:

1. 在Action中经过DAO查询出一切的记载,然后加到session或request目标中,传到客户端,由JSP进行分页。这种办法关于在数据量少的时分很便利,也不影响速度。

2.在Action中每次经过DAO只查询出一页的记载,再传给JSP页面。这种结构关于数据量大的程序很好,但关于数据量小的状况,会增加对服务器的恳求,加大服务器的负载。

1).Hibernate DAO类

  1. packagecom.jpcf.db.dao;
  2. importcom.jpcf.db.model.*;
  3. importcom.jpcf.db.helper.HibernateUtil;
  4. importnet.sf.hibernate.*;
  5. importjava.util.*;
  6. importcom.jpcf.db.controller.*;
  7. publicclassVehiclePropertyDAO{
  8. publicCollectionfindWithPage(intpageSize,intstartRow)throws
  9. HibernateException{
  10. CollectionvehicleList=null;
  11. Transactiontx=null;
  12. try{
  13. Sessionsession=HibernateUtil.currentSession();
  14. tx=session.beginTransaction();
  15. Queryq=session.createQuery("fromVehiclePropertyvp");
  16. q.setFirstResult(startRow);
  17. q.setMaxResults(pageSize);
  18. vehicleList=q.list();
  19. tx.commit();
  20. }catch(HibernateExceptionhe){
  21. if(tx!=null){
  22. tx.rollback();
  23. }
  24. throwhe;
  25. }finally{
  26. HibernateUtil.closeSession();
  27. }
  28. returnvehicleList;
  29. }
  30. publicintgetRows(Stringquery)throws
  31. HibernateException{
  32. inttotalRows=0;
  33. Transactiontx=null;
  34. try{
  35. Sessionsession=HibernateUtil.currentSession();
  36. tx=session.beginTransaction();
  37. totalRows=((Integer)session.iterate(query).next()).
  38. intValue();
  39. tx.commit();
  40. }
  41. catch(HibernateExceptionhe){
  42. if(tx!=null){
  43. tx.rollback();
  44. }
  45. throwhe;
  46. }
  47. finally{
  48. HibernateUtil.closeSession();
  49. }
  50. returntotalRows;
  51. }
  52. }

Hibernate DAO类我就贴这些分页需求的代码了。“from VehicleProperty vp”也能够用一个参数传进来,有爱好的自己改一下吧

2).Action

下面是在Action中用到的代码:

  1. publicActionForwardqueryWithPage(ActionMappingactionMapping,
  2. ActionFormactionForm
  3. HttpServletRequesthttpServletRequest,
  4. HttpServletResponsehttpServletresponse){
  5. CollectionclInfos=null;//用于输出到页面的记载调集
  6. inttotalRows;//记载总行
  7. VehiclePropertyDAOvehicleDAO=newVehiclePropertyDAO();
  8. //获得当时表中的总行数
  9. try{
  10. totalRows=vehicleDAO.getRows("selectcount(*)fromVehicleProperty");
  11. }catch(Exceptionex){
  12. servlet.log(ex.toString());
  13. returnactionMapping.findForward(Constants.FAILURE);
  14. }
  15. //经过PagerHelper类来获取用于输出到页面的pager目标
  16. Pagerpager=PagerHelper.getPager(httpServletRequest,totalRows);
  17. //取出从startRow开端的pageSize行记载
  18. try{
  19. clInfos=vehicleDAO.findWithPage(pager.getPageSize(),pager.getStartRow());
  20. }
  21. catch(Exceptionex){
  22. servlet.log(ex.toString());
  23. returnactionMapping.findForward(Constants.FAILURE);
  24. }
  25. //把输出的记载集和pager目标保存到request目标中
  26. httpServletRequest.setAttribute("CLINFOS",clInfos);
  27. httpServletRequest.setAttribute("PAGER",pager);
  28. returnactionMapping.findForward(Constants.SUCCESS);
  29. }

查询句子select count(*) from VehicleProperty 也能够换成你需求的恣意的条件(select count(*) from VehicleProperty where ..)

【修改引荐】

  1. Hibernate可行性全面归纳
  2. Hibernate Sequence根底描绘
  3. 浅析Hibernate运用EhCache
  4. Hibernate的一级Cache
  5. Hibernate update浅谈
转载请说明出处
知优网 » Hibernate DAO类概述(dao和hibernate)

发表评论

您需要后才能发表评论