温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hibernate DAO类怎么使用

发布时间:2021-12-06 09:23:08 来源:亿速云 阅读:104 作者:iii 栏目:编程语言

这篇文章主要讲解了“Hibernate DAO类怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate DAO类怎么使用”吧!

在Struts分页有两种结构:

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

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

1).Hibernate DAO类

package com.jpcf.db.dao;  import com.jpcf.db.model.*;  import com.jpcf.db.helper.HibernateUtil;  import net.sf.hibernate.*;  import java.util.*;  import com.jpcf.db.controller.*;  public class VehiclePropertyDAO {  public Collection findWithPage(int pageSize, int startRow) throws  HibernateException {  Collection vehicleList = null;  Transaction tx = null;  try {  Session session = HibernateUtil.currentSession();  tx = session.beginTransaction();  Query q = session.createQuery("from VehicleProperty vp");  q.setFirstResult(startRow);  q.setMaxResults(pageSize);  vehicleList = q.list();  tx.commit();  } catch (HibernateException he) {  if (tx != null) {  tx.rollback();  }  throw he;  } finally {  HibernateUtil.closeSession();  }  return vehicleList;  }  public int getRows(String query) throws  HibernateException {  int totalRows = 0;  Transaction tx = null;  try {  Session session = HibernateUtil.currentSession();  tx = session.beginTransaction();  totalRows = ((Integer) session.iterate(query).next()).  intValue();  tx.commit();  }  catch (HibernateException he) {  if (tx != null) {  tx.rollback();  }  throw he;  }  finally {  HibernateUtil.closeSession();  }  return totalRows;  }  }

Hibernate DAO类我就贴这些分页需要的代码了。“from VehicleProperty vp”也可以用一个参数传进来,有兴趣的自己改一下吧

2).Action

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

public ActionForward queryWithPage(ActionMapping actionMapping,  ActionForm actionForm  HttpServletRequest httpServletRequest,  HttpServletResponse httpServletresponse) {  Collection clInfos = null;//用于输出到页面的记录集合  int totalRows;//记录总行  VehiclePropertyDAO vehicleDAO = new VehiclePropertyDAO();  //取得当前表中的总行数  try {  totalRows = vehicleDAO.getRows("select count(*) from VehicleProperty");  } catch (Exception ex) {  servlet.log(ex.toString());  return actionMapping.findForward(Constants.FAILURE);  }  //通过PagerHelper类来获取用于输出到页面的pager对象  Pager pager=PagerHelper.getPager(httpServletRequest,totalRows);  //取出从startRow开始的pageSize行记录  try {  clInfos = vehicleDAO.findWithPage(pager.getPageSize(), pager.getStartRow());  }  catch (Exception ex) {  servlet.log(ex.toString());  return actionMapping.findForward(Constants.FAILURE);  }  //把输出的记录集和pager对象保存到request对象中  httpServletRequest.setAttribute("CLINFOS", clInfos);  httpServletRequest.setAttribute("PAGER", pager);  return actionMapping.findForward(Constants.SUCCESS);  }

查询语句select count(*) from VehicleProperty 也可以换成你需要的任意的条件(select count(*) from VehicleProperty where ..)

感谢各位的阅读,以上就是“Hibernate DAO类怎么使用”的内容了,经过本文的学习后,相信大家对Hibernate DAO类怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI