- 浏览: 371816 次
-
文章分类
- 全部博客 (401)
- hibernate 入门 (24)
- it生活 (3)
- MapReduce 算法设计 (1)
- Android (13)
- java (6)
- web (4)
- 技术文章 (9)
- javascript (1)
- html5 (1)
- 数据库 (3)
- jquary (1)
- 1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
- 2.Java新手区 (0)
- 4.其他技术区 (0)
- 6.转载区(Java技术文章转载, 请注明原文出处) (0)
- 5.提问区(Java方面的技术提问) (0)
- servlet (1)
- IT 生活 (2)
- Struts2 (2)
- Struts 2 教程 (2)
- jQuery (1)
- DOM (1)
- ibatis,hibernate (1)
- 数据分析师 (1)
最新评论
-
NIIT_zhu:
我现在要做一个 基于exchange 2010的webmail ...
Exchange 2003 升级到Exchange 2010 之申请证书并分配服务! -
yinren13:
实在不行试试简单易用的turbomeeting,连接速度很快的 ...
QQ远程协助没动静?QQ版本有讲究 -
jicu7766240:
写得很好。赞一个!2年开发的我深有感触。这些我觉得说得很对。要 ...
老程序员的忠告:不要做浮躁的软件工程师 -
haohao-xuexi02:
好像很多人都买起却看不起书。。找各种理由不看。。我的书也这样 ...
老程序员的忠告:不要做浮躁的软件工程师 -
Judy123456:
希望可以提供源代码噢,我最近正好在学这个底部菜单,非常希望楼 ...
Android仿微信底部菜单
http://blog.csdn.net/zhjb1025/archive/2006/04/19/668631.aspx
整理的代码如下:
Page.Java接口
packageorg.domain.scrm4u.helper; importjava.util.List; publicinterfacePage{ booleanisFirstPage(); booleanisLastPage(); booleanhasNextPage(); booleanhASPreviousPage(); intgetLastPageNumber(); List<?>getThisPageElements(); intgetTotalNumberOfElements(); intgetThisPageFirstElementNumber(); intgetThisPageLastElementNumber(); intgetNextPageNumber(); intgetPreviousPageNumber(); intgetPageSize(); intgetPageNumber(); }
ListPage.java实现:
packageorg.domain.scrm4u.helper.impl; importjava.util.List; importorg.domain.scrm4u.helper.Page; publicclassListPageimplementsPage{ privateList<?>elements; privateintpageSize; privateintpageNumber; publicListPage(List<?>elements,intpageNumber,intpageSize){ this.elements=elements; this.pageSize=pageSize; this.pageNumber=pageNumber; if(Integer.MAX_VALUE==this.pageNumber)this.pageNumber=(getTotalNumberOfElements()/this.pageSize); } publicbooleanisFirstPage(){ returngetPageNumber()==0; } publicbooleanisLastPage(){ returngetPageNumber()>=getLastPageNumber(); } publicbooleanhasNextPage(){ return((getPageNumber()+1)*getPageSize())<(getTotalNumberOfElements()+1); } publicbooleanhasPreviousPage(){ returngetPageNumber()>0; } publicintgetLastPageNumber(){ doubletotalResults=newInteger(getTotalNumberOfElements()).doubleValue(); returnnewDouble(Math.floor(totalResults/getPageSize())).intValue(); } publicList<?>getThisPageElements(){ finalintstart=getPageNumber()*getPageSize(); returnelements.subList( Math.min(start,getTotalNumberOfElements()+1), Math.min(start+getPageSize(),getTotalNumberOfElements()+1) ); } publicintgetTotalNumberOfElements(){ returnelements.size()-1; } publicintgetThisPageFirstElementNumber(){ returngetPageNumber()*getPageSize()+1; } publicintgetThisPageLastElementNumber(){ intfullPage=getThisPageFirstElementNumber()+getPageSize()-1; returngetTotalNumberOfElements()<fullPage?getTotalNumberOfElements():fullPage; } publicintgetNextPageNumber(){ returngetPageNumber()+1; } publicintgetPreviousPageNumber(){ returngetPageNumber()-1; } publicintgetPageSize(){ returnpageSize; } publicintgetPageNumber(){ returnpageNumber; } }
packageorg.domain.scrm4u.helper.impl; importjava.util.List; importorg.domain.scrm4u.helper.Page; importorg.hibernate.HibernateException; importorg.hibernate.Query; importorg.hibernate.ScrollMode; importorg.hibernate.ScrollableResults; publicclassHibernatePageimplementsPage{ protectedList<?>elements; protectedintpageSize; protectedintpageNumber; protectedinttotalElements=0; privateScrollableResultsscrollableResults; privateHibernatePage(intpageNumber,intpageSize){ this.pageNumber=pageNumber; this.pageSize=pageSize; } publicbooleanisFirstPage(){ returngetPageNumber()==0; } publicbooleanisLastPage(){ returngetPageNumber()>=getLastPageNumber(); } publicbooleanhasNextPage(){ returnelements.size()>getPageSize(); } publicbooleanhASPreviousPage(){ returngetPageNumber()>0; } publicintgetLastPageNumber(){ doubletotalResults=newInteger(getTotalNumberOfElements()).doubleValue(); returnnewDouble(Math.floor(totalResults/getPageSize())).intValue(); } publicList<?>getThisPageElements(){ returnhasNextPage()?elements.subList(0,getPageSize()):elements; } publicintgetTotalNumberOfElements(){ returntotalElements; } publicintgetThisPageFirstElementNumber(){ returngetPageNumber()*getPageSize()+1; } publicintgetThisPageLastElementNumber(){ intfullPage=getThisPageFirstElementNumber()+getPageSize()-1; returngetTotalNumberOfElements()<fullPage?getTotalNumberOfElements():fullPage; } publicintgetNextPageNumber(){ returngetPageNumber()+1; } publicintgetPreviousPageNumber(){ returngetPageNumber()-1; } publicintgetPageSize(){ returnpageSize; } publicintgetPageNumber(){ returnpageNumber; } publicstaticHibernatePagegetScrollPage(Queryquery,intpageNumber,intpageSize,ScrollModescrollMode){ HibernatePagesp=newHibernatePage(pageNumber,pageSize); try{ sp.scrollableResults=query.scroll(scrollMode); if(scrollMode==ScrollMode.SCROLL_SENSITIVE){ sp.scrollableResults.last(); sp.totalElements=sp.scrollableResults.getRowNumber(); }else{ sp.totalElements=sp.calculateTotalElementsByList(query); } sp.determineElements(query); }catch(HibernateExceptione){ e.printStackTrace(); } returnsp; } privatevoiddetermineElements(Queryquery)throwsHibernateException{ if(Integer.MAX_VALUE==this.pageNumber)this.pageNumber=(getTotalNumberOfElements()/this.pageSize); elements=query.setFirstResult(this.pageNumber*this.pageSize).setMaxResults(this.pageSize+1).list(); } privateintcalculateTotalElementsByList(Queryquery)throwsHibernateException{ returnquery.list().size(); } }
简单分析一下:
ListPage实现需要把查询的结果集全部取出来。
我们着重还是分析一下HibernatePage的实现。
测试代码如下:
importJava.io.IOException; importjava.sql.SQLException; importjava.util.List; importorg.hibernate.Query; importorg.hibernate.ScrollMode; importorg.hibernate.Session; importorg.hibernate.SessionFactory; importorg.hibernate.cfg.AnnotationConfiguration; importorg.hibernate.cfg.Configuration; importorg.domain.scrm4u.helper.Page; importorg.domain.scrm4u.helper.impl.HibernatePage; importorg.domain.scrm4u.entity.TPsn; publicclassBusinessService{ publicstaticvoidmain(String[]args)throwsIOException,SQLException{ Configurationconfig= newAnnotationConfiguration().configure(); SessionFactorysessionFactory=config.buildSessionFactory(); Sessionsession=sessionFactory.openSession(); StringHql="fromTPsn"; Queryquery=session.createQuery(Hql); Pagepage=HibernatePage.getScrollPage(query,0,10,ScrollMode.SCROLL_SENSITIVE); List<?>list=page.getThisPageElements(); for(inti=0;i<list.size();i++){ TPsnpsn=(TPsn)list.get(i); System.out.println(psn.getPsnNo()+"t"+psn.getPsnPnm()+"t"+psn.getPsnBrthDt()); } session.close(); sessionFactory.close(); } }
测试中发现:
使用ScrollMode.SCROLL_SENSITIVE比ScrollMode.FORWARD_ONLY在性能上要快很多。具体选择要看使用的JDBC驱动是否支撑了,支持scroll的话就可以使用ScrollableResults类来处理结果集了。
当然,我们还可以配合缓存技术让翻页更有效率。
关于缓存请参看http://blog.csdn.net/kunshan_shenbin/archive/2008/09/03/2874992.ASPx。
发表评论
-
Hibernate里面使用sql查询
2012-04-11 10:17 4083hibernate3.0中是可以使用sql语句,但一般还 ... -
Hibernate工作原理及使用理由
2012-04-11 10:01 16931.读取并解析配置文件2.读取并解析映射信息,创建S ... -
hibernate+sqlserver中文乱码的解决
2012-04-10 08:03 1807首先要编写一个编码过滤器,起编码如下: pa ... -
spring 配置 hibernate 二级缓存
2012-04-10 08:01 1539今天在配置spring + hibernate过程中出现些问题 ... -
spring + hibernate 二级缓存 ehcache
2012-04-09 10:05 12581:配置spring 文件 在sessionfactiory ... -
实现OSCache二级缓存的配置方案
2012-04-09 10:03 1075今天在使用hibernate的时候要配置二级缓存,给大家分享一 ... -
hibernate HQL 查询使用详解
2012-04-13 23:45 3670Hibernate Query Language(HQL)提供 ... -
JPA环境下使用Hibernate二级缓存
2012-04-13 23:45 753hibernate二级缓存本质上分为两类: 1.对象缓存 ... -
Hibernate JPA 的索引的使用
2012-04-13 23:44 915在Hibernate中Model中一个对象关联的对象相当多是必 ... -
Hibernate分页查询(使用HQL语言)
2012-04-12 21:29 1177例: import java.util.Iterator ... -
使用hibernate的HQL查询语言时参数需要为String类型
2012-04-12 21:29 1118本人新手,在使用hibernate的HQL查询语言时传进来的参 ... -
Hibernate缓存何时使用和如何使用
2012-04-12 21:29 1023<hibernate-mapping> < ... -
使用Hibernate实现多表查询
2012-04-12 21:29 1256项目中使用的是Hibernate框架,对于表查询一直只针对一张 ... -
Hibernate里面使用sql查询
2012-04-12 21:28 1006hibernate3.0中是可以使用sql语句,但一般还是hq ... -
Hibernate工作原理及使用理由
2012-04-08 13:31 01.读取并解析配置文件 2.读取并解析映射信息,创建Sess ... -
hibernate+sqlserver中文乱码的解决
2012-04-08 13:30 0首先要编写一个编码过滤器,起编码如下: pack ... -
spring + hibernate 二级缓存 ehcache
2012-04-08 13:28 01:配置spring 文件 在sessionfacti ... -
实现OSCache二级缓存的配置方案
2012-04-08 13:23 0我在这里以应用十分广泛的OSCache第三方缓存框架为例,谈谈 ... -
Hibernate事务处理机制----2
2012-04-08 13:20 919二、JTATransaction 如果你 ... -
Hibernate事务处理机制--1
2012-04-08 13:17 1032Hibernate是对JDBC的轻量级对象封装,Hiberna ...
相关推荐
根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在Struts2与Hibernate框架结合下实现分页功能。接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate...
总的来说,使用Struts和Hibernate实现分页功能,需要结合MVC模式和ORM思想,合理设计数据访问层和业务逻辑层,同时确保前端与后端的有效通信。这个过程涉及到了Java编程、数据库操作、框架理解和页面渲染等多个方面...
本教程将详细讲解如何使用Hibernate实现分页功能,这对于处理大量数据的Web应用来说至关重要,因为它能够有效地减少数据库负载,提高用户体验。 一、Hibernate分页基础 1. Hibernate的Query和Criteria API都提供了...
本篇将介绍如何使用Struts和Hibernate框架来实现Web应用中的分页功能。 首先,Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它负责处理用户请求并控制应用程序的流程。而Hibernate则是一...
### 在JDBC与Hibernate中实现分页功能 随着数据量的不断增长,...通过上述介绍可以看出,无论是使用Hibernate还是JDBC,合理设计和实现分页功能能够显著提升用户界面的性能和响应速度,同时也提高了系统的整体性能。
要实现分页功能,可以使用`Pageable`接口。创建一个服务类,注入刚才创建的Repository,并编写分页查询的方法: ```java import org.springframework.beans.factory.annotation.Autowired; import org.spring...
本项目是基于`jsp`(Java Server Pages)和`Hibernate`框架实现的分页功能,通过Java代码来详细展示了如何在Web应用中高效地实现这一功能。 `jsp`是Java的一种动态网页技术,允许开发者在HTML中嵌入Java代码,以...
在这个项目中,“spring+struts2+hibernate整合实现分页”是一个基础教程,旨在帮助初学者理解如何在SSH框架下实现数据的分页展示。下面将详细讲解这个主题中的关键知识点。 1. **Spring框架**:Spring是Java应用的...
### 使用Hibernate实现分页查询 #### 一、分页查询概念及原理 分页查询是一种在数据量较大的情况下,为了提高用户体验和系统性能而采取的一种技术手段。它将查询结果分成若干页显示,用户可以通过翻页操作查看不同...
本篇文章将深入探讨如何使用Hibernate实现模糊查询和分页功能,这对于任何需要处理大量数据的应用程序来说都是至关重要的技能。 首先,让我们了解Hibernate的核心概念。Hibernate是一个开源的JPA(Java Persistence...
根据提供的标题、描述以及部分内文,我们可以梳理出关于如何使用Struts2与Hibernate实现分页功能的关键知识点。 ### Struts2与Hibernate简介 - **Struts2**:这是一个基于MVC架构的开源Web框架,它能帮助开发者...
【标题】:“Hibernate实现分页” 在Web应用程序开发中,数据分页是一种常见的需求,它有助于提高用户体验,尤其是在处理大量数据时。Hibernate作为一款流行的Java持久化框架,提供了多种方式来实现分页查询。本...
在Java的持久化框架Hibernate中,二级缓存和分页功能是两个重要的优化手段,能够显著提升应用程序的性能和用户体验。下面将详细讲解这两个概念及其实际应用。 **一、Hibernate二级缓存** Hibernate一级缓存是指...
### Hibernate 实现分页查询详解 #### 一、引言 在进行数据库操作时,为了提高用户体验和系统性能,分页查询是一项非常重要的技术。...以上就是关于Hibernate实现分页查询的具体介绍,希望对大家有所帮助。
hibernate分页
在这个教程中,我们将探讨如何利用Struts2和Hibernate实现分页功能。 **1. 数据库设计** 首先,我们需要一个简单的数据库表,如Tb_soft中的software表,包含一些基本字段如Tsoftware, fSoftname, fListImage等。...
例如,使用Criteria API,我们可以设置`setFirstResult()`和`setMaxResults()`来实现分页。 此外,为了在页面上显示分页效果,我们需要在JSP(Java Server Pages)中使用Struts的标签库,如`s:iterator`标签遍历...
本文将详细介绍如何在Struts2、Spring2和Hibernate3集成环境下实现经典的分页功能,并提供部分Java及JSP源代码示例。 #### 二、核心概念和技术介绍 1. **Struts2**:是一个开源的Web应用框架,它继承了Struts的...
基于Hibernate的分页通常可以通过HQL(Hibernate Query Language)或者Criteria API实现,也可以结合数据库自身的分页功能,比如MySQL的LIMIT和OFFSET关键字。 4. Struts2:Struts2是一个强大的MVC(Model-View-...
这里我们讨论的是结合Spring、Hibernate和MySQL实现的分页功能,这是一个常见的技术栈组合,广泛应用于Web应用开发。 Spring是一个开源的Java框架,它提供了全面的编程和配置模型,用于构建企业级应用。Spring的IoC...