这里介绍Hibernate DAO类,在Action中通过DAO查询出所有的记录,然后加到session或request对象中,传到客户端,由JSP进行分页。这种方法对于在数据量少的时候很方便,也不影响速度。
本文向我们介绍Hibernate DAO类,或许好多人还不了解Hibernate DAO类,没有关系,看完本文你必定有不少收成,期望本文能教会你更多东西。
在Struts分页有两种结构:
1. 在Action中经过DAO查询出一切的记载,然后加到session或request目标中,传到客户端,由JSP进行分页。这种办法关于在数据量少的时分很便利,也不影响速度。
2.在Action中每次经过DAO只查询出一页的记载,再传给JSP页面。这种结构关于数据量大的程序很好,但关于数据量小的状况,会增加对服务器的恳求,加大服务器的负载。
1).Hibernate DAO类
- packagecom.jpcf.db.dao;
- importcom.jpcf.db.model.*;
- importcom.jpcf.db.helper.HibernateUtil;
- importnet.sf.hibernate.*;
- importjava.util.*;
- importcom.jpcf.db.controller.*;
- publicclassVehiclePropertyDAO{
- publicCollectionfindWithPage(intpageSize,intstartRow)throws
- HibernateException{
- CollectionvehicleList=null;
- Transactiontx=null;
- try{
- Sessionsession=HibernateUtil.currentSession();
- tx=session.beginTransaction();
- Queryq=session.createQuery("fromVehiclePropertyvp");
- q.setFirstResult(startRow);
- q.setMaxResults(pageSize);
- vehicleList=q.list();
- tx.commit();
- }catch(HibernateExceptionhe){
- if(tx!=null){
- tx.rollback();
- }
- throwhe;
- }finally{
- HibernateUtil.closeSession();
- }
- returnvehicleList;
- }
- publicintgetRows(Stringquery)throws
- HibernateException{
- inttotalRows=0;
- Transactiontx=null;
- try{
- Sessionsession=HibernateUtil.currentSession();
- tx=session.beginTransaction();
- totalRows=((Integer)session.iterate(query).next()).
- intValue();
- tx.commit();
- }
- catch(HibernateExceptionhe){
- if(tx!=null){
- tx.rollback();
- }
- throwhe;
- }
- finally{
- HibernateUtil.closeSession();
- }
- returntotalRows;
- }
- }
Hibernate DAO类我就贴这些分页需求的代码了。“from VehicleProperty vp”也能够用一个参数传进来,有爱好的自己改一下吧
2).Action
下面是在Action中用到的代码:
- publicActionForwardqueryWithPage(ActionMappingactionMapping,
- ActionFormactionForm
- HttpServletRequesthttpServletRequest,
- HttpServletResponsehttpServletresponse){
- CollectionclInfos=null;//用于输出到页面的记载调集
- inttotalRows;//记载总行
- VehiclePropertyDAOvehicleDAO=newVehiclePropertyDAO();
- //获得当时表中的总行数
- try{
- totalRows=vehicleDAO.getRows("selectcount(*)fromVehicleProperty");
- }catch(Exceptionex){
- servlet.log(ex.toString());
- returnactionMapping.findForward(Constants.FAILURE);
- }
- //经过PagerHelper类来获取用于输出到页面的pager目标
- Pagerpager=PagerHelper.getPager(httpServletRequest,totalRows);
- //取出从startRow开端的pageSize行记载
- try{
- clInfos=vehicleDAO.findWithPage(pager.getPageSize(),pager.getStartRow());
- }
- catch(Exceptionex){
- servlet.log(ex.toString());
- returnactionMapping.findForward(Constants.FAILURE);
- }
- //把输出的记载集和pager目标保存到request目标中
- httpServletRequest.setAttribute("CLINFOS",clInfos);
- httpServletRequest.setAttribute("PAGER",pager);
- returnactionMapping.findForward(Constants.SUCCESS);
- }
查询句子select count(*) from VehicleProperty 也能够换成你需求的恣意的条件(select count(*) from VehicleProperty where ..)
【修改引荐】
- Hibernate可行性全面归纳
- Hibernate Sequence根底描绘
- 浅析Hibernate运用EhCache
- Hibernate的一级Cache
- Hibernate update浅谈
转载请说明出处
知优网 » Hibernate DAO类概述(dao和hibernate)
知优网 » Hibernate DAO类概述(dao和hibernate)