使用Hibernate进行物理分页的方法
"该文档详细介绍了在Struts、Spring和Hibernate整合应用中实现通用分页的方法,主要讨论了两种分页策略,并提供了相关的单元测试代码作为示例。" 在Java Web开发中,尤其是在大型项目中,分页是必不可少的功能,它帮助用户更有效地浏览和管理大量的数据。本文件探讨了在Struts、Spring和Hibernate框架下实现通用分页的两种方法: 1. 内存分页:这种方法是在服务器端一次性获取所有数据,然后在内存中进行分页处理。虽然这种方式实现起来简单,但当数据量巨大时,会消耗大量内存,且效率低下,不适用于大数据量的场景。 2. 物理分页(Hibernate分页):这种策略是通过Hibernate的查询功能来实现的,每次只查询数据库中的一页数据。客户端传递当前页码和每页记录数,服务器先计算总记录数,然后根据这些信息确定要从数据库中获取哪一部分数据。这种方法需要两次数据库查询,一次获取总记录数,一次获取当前页的数据,但相比内存分页,它更适用于大数据集,能有效减轻服务器内存压力。 文件中提供的单元测试代码展示了如何使用`CriteriaQuery`类进行物理分页查询。`CriteriaQuery`是对Hibernate的Query By Criteria(QBC)方法的封装,它接收实体类、当前页码、每页记录数等参数,用于构建分页查询。在Delegate层,这些参数被传递给具体的服务处理器执行查询操作。 测试代码如下: ```java public final void testFindAllRole() { logger.debug("testFindAllRole"); long l1 = System.currentTimeMillis(); String myaction = "roleList.do"; String curPageNO = "1"; CriteriaQuery cq = new CriteriaQuery(Role.class, curPageNO, myaction); cq.setPageSize(10); PageSupport ps = BeanFactory.getInstance().getRightDelegate().findAllRole(cq, state); long l2 = System.currentTimeMillis(); AppUtils.printCollection(ps.getResultList()); System.out.println("一共用时为:" + (l2 - l1)); } ``` 这段代码首先记录开始时间,然后创建一个`CriteriaQuery`实例,设置页面大小为10,并调用Delegate服务查询角色数据。查询完成后,打印出结果列表并计算执行时间,以验证性能。 在Delegate层,`findAllRole`方法接收到`CriteriaQuery`对象和状态对象,然后将请求转发到具体的服务处理器。这里的`Request`对象包含了服务名称和服务处理器的相关信息。 通过这种方式,开发者可以实现一套通用的分页机制,使其能够在不同的业务场景下复用,提高了代码的可维护性和灵活性。同时,利用Hibernate的物理分页功能,即使在大数据量的情况下,也能保持良好的性能和用户体验。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 0
- 资源: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)