溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hibernate DAO類怎么使用

發(fā)布時間:2021-12-06 09:23:08 來源:億速云 閱讀:119 作者:iii 欄目:編程語言

這篇文章主要講解了“Hibernate DAO類怎么使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Hibernate DAO類怎么使用”吧!

在Struts分頁有兩種結(jié)構(gòu):

1. 在Action中通過DAO查詢出所有的記錄,然后加到session或request對象中,傳到客戶端,由JSP進行分頁。這種方法對于在數(shù)據(jù)量少的時候很方便,也不影響速度。

2.在Action中每次通過DAO只查詢出一頁的記錄,再傳給JSP頁面。這種結(jié)構(gòu)對于數(shù)據(jù)量大的程序很好,但對于數(shù)據(jù)量小的情況,會增加對服務(wù)器的請求,加大服務(wù)器的負載。

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”也可以用一個參數(shù)傳進來,有興趣的自己改一下吧

2).Action

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

public ActionForward queryWithPage(ActionMapping actionMapping,  ActionForm actionForm  HttpServletRequest httpServletRequest,  HttpServletResponse httpServletresponse) {  Collection clInfos = null;//用于輸出到頁面的記錄集合  int totalRows;//記錄總行  VehiclePropertyDAO vehicleDAO = new VehiclePropertyDAO();  //取得當(dāng)前表中的總行數(shù)  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類怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Hibernate DAO類怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI