Hibernate DAO类概述

开发 后端
这里介绍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类

  1. package com.jpcf.db.dao;  
  2. import com.jpcf.db.model.*;  
  3. import com.jpcf.db.helper.HibernateUtil;  
  4. import net.sf.hibernate.*;  
  5. import java.util.*;  
  6. import com.jpcf.db.controller.*;  
  7. public class VehiclePropertyDAO {  
  8. public Collection findWithPage(int pageSize, int startRow) throws  
  9. HibernateException {  
  10. Collection vehicleList = null;  
  11. Transaction tx = null;  
  12. try {  
  13. Session session = HibernateUtil.currentSession();  
  14. tx = session.beginTransaction();  
  15. Query q = session.createQuery("from VehicleProperty vp");  
  16. q.setFirstResult(startRow);  
  17. q.setMaxResults(pageSize);  
  18. vehicleList = q.list();  
  19. tx.commit();  
  20. } catch (HibernateException he) {  
  21. if (tx != null) {  
  22. tx.rollback();  
  23. }  
  24. throw he;  
  25. } finally {  
  26. HibernateUtil.closeSession();  
  27. }  
  28. return vehicleList;  
  29. }  
  30. public int getRows(String query) throws  
  31. HibernateException {  
  32. int totalRows = 0;  
  33. Transaction tx = null;  
  34. try {  
  35. Session session = HibernateUtil.currentSession();  
  36. tx = session.beginTransaction();  
  37. totalRows = ((Integer) session.iterate(query).next()).  
  38. intValue();  
  39. tx.commit();  
  40. }  
  41. catch (HibernateException he) {  
  42. if (tx != null) {  
  43. tx.rollback();  
  44. }  
  45. throw he;  
  46. }  
  47. finally {  
  48. HibernateUtil.closeSession();  
  49. }  
  50. return totalRows;  
  51. }  

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

2).Action

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

  1. public ActionForward queryWithPage(ActionMapping actionMapping,  
  2. ActionForm actionForm  
  3. HttpServletRequest httpServletRequest,  
  4. HttpServletResponse httpServletresponse) {  
  5. Collection clInfos = null;//用于输出到页面的记录集合  
  6. int totalRows;//记录总行  
  7. VehiclePropertyDAO vehicleDAO = new VehiclePropertyDAO();  
  8. //取得当前表中的总行数  
  9. try {  
  10. totalRows = vehicleDAO.getRows("select count(*) from VehicleProperty");  
  11. } catch (Exception ex) {  
  12. servlet.log(ex.toString());  
  13. return actionMapping.findForward(Constants.FAILURE);  
  14. }  
  15. //通过PagerHelper类来获取用于输出到页面的pager对象  
  16. Pager pager=PagerHelper.getPager(httpServletRequest,totalRows);  
  17. //取出从startRow开始的pageSize行记录  
  18. try {  
  19. clInfos = vehicleDAO.findWithPage(pager.getPageSize(), pager.getStartRow());  
  20. }  
  21. catch (Exception ex) {  
  22. servlet.log(ex.toString());  
  23. return actionMapping.findForward(Constants.FAILURE);  
  24. }  
  25. //把输出的记录集和pager对象保存到request对象中  
  26. httpServletRequest.setAttribute("CLINFOS", clInfos);  
  27. httpServletRequest.setAttribute("PAGER", pager);  
  28. return actionMapping.findForward(Constants.SUCCESS);  

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

【编辑推荐】

  1. Hibernate可行性全面概括
  2. Hibernate Sequence基础描述
  3. 浅析Hibernate使用EhCache
  4. Hibernate的一级Cache
  5. Hibernate update浅谈
责任编辑:佚名 来源: IT168
相关推荐

2009-06-29 08:48:41

Hibernate缓存

2009-09-29 16:04:29

Hibernate S

2009-09-23 09:47:23

Hibernate e

2009-09-25 16:27:33

Hibernate S

2009-09-21 17:55:14

Hibernate O

2009-09-28 12:57:54

Hibernate C

2009-09-22 15:10:22

Hibernate映射

2009-09-23 17:03:08

Hibernate S

2009-09-28 15:14:45

Hibernate S

2009-07-02 09:39:37

Hibernate延迟

2009-09-23 10:41:10

对象标识符Hibernate

2009-09-28 16:26:23

Orders OrdeHibernate

2009-09-24 13:17:37

Hibernate类库

2009-09-28 13:29:41

加载过程Hibernate访问

2009-09-22 14:57:34

Hibernate d

2009-09-03 10:42:16

C# Employee

2009-09-27 09:55:38

Hibernate持久

2009-09-29 16:46:01

创建Hibernate

2009-09-25 17:19:28

Hibernate持久

2009-08-31 18:46:05

继承System.Ob
点赞
收藏

51CTO技术栈公众号