e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 程序开发 >> JSP教程 >> 关于JAVA的分页查询操作技术 >> 教程正文
 
教程搜索
 
 
相关教程
  • JSP分页技术实现
  • 使用XML封装数据库操作语句的实现(完
  • 结合”XML封装数据库操作语句的实现”
  • 如何使用XML实现多渠道接入网站的构架
  • 深入浅出taglib
  • 在JSP中编写你的第一个Tag
  • 用Java实现Web服务器
  • 如何利用xml,javascript绕开apple
  • 缓存JSP显示的内容
  • 关于JAVA的分页查询操作技术
  • 漫步j2ee之jsp技术(1)
  • 漫步j2ee之jsp技术(2)
  • Portlet应用开发(Portlet Specs v1.0)
  • 如何用jsp输出存在于oracle数据库Blob
  • Servlet设计
  • 用servlet显示图片
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
关于JAVA的分页查询操作技术
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9
询结果集定位行范围过滤的功能,因此直接利用了数据库的性能对此分页查询的优化功能。


对数据库的访问资源(数据库连接对象,数据库游标等)没有浪费,这些资源的充分重复的利用。

对查询的结果对Web容器没有什么特别要求。

缺点:

要执行多次数据库SQL查询操作。对每次的分页面操作请求都要指定相应范围的结果集来执行SQL语句的数据库查询操作,这对数据库有一定的影响。

对每次分页面查询请求要频繁的从Web容器中获得数据库访问资源(数据库连接对象和数据库游标)。

要依赖于具体的数据库产品。因为对没有实现没有提供此技术的数据库产品不能使用此方式。

结论:

由于每次对数据库的SQL查询操作相对而言耗用的数据资源比较少,并且在实际用户的操作中,有可能用户对查询的所有结果集只是需要查看其中的部分页面。

因此这种方式是最佳的。

3 特别处理的定位行集SQL查询 这种方式是在方式2的基础上针对不提供对查询结果集行范围定位的数据库产品。

其在Web容器端的操作逻辑大致和方式2相同。

只是先要对要查询的数据库表要有一字段的数据能区别每条不同的数据记录。第一次查询时,获得用来可唯一标识不同记录的字段的所有结果集,并缓存起来以备后面的分页面查询指定要查询的结果集的行范围。 主要是针对不同对查询行集可定位范围获得的数据库产品,如MS SQL Server等。 假设从A,B,C三个表中选取数据。且A有字段ID用来可唯一区别不同的记录。

那么第一次查询的时候,会查询两次1. select A.id from A,B,C where condition.

2. 把A的ID缓存到SESSION中⾿3.从Session中。现可按照次序来取得相应页面范围的ID来,并构造下一个查询语句:select A.name, B.add from A,B,C where condition && (

A.ID in 本页面范围的 ID )

以后每次翻页的时候,依次获得对应页的ID只要表中唯一的就可以了。无所谓大小,顺序⾿这样,SESSSION缓存的就只是一列而不是所有列了。当然,对于列数不多的,效果并不好。

也可使用存储过程实现,可参照:http://expert.csdn.net/Expert/topic

/2365/2365596.xml?temp=.7529261

优点:

同方式2

缺点:

同方式2;

还要在要查询的数据库表中建立一个相应的ID,用来唯一区别每条记录。

结论:

同方式2。

4 缓存一次SQL查询的结果集 优点:

缺点:

既然我们要缓存结果,那么用户就可能会看到过期的数据

说明:对于实际情况的应用来说,一般结合实际情况,结合使用方式2(或方式3)和方式4。如:一个应用场景:对公司的产品的查询是经常的,但是产品的种类不是很多,这时可使用缓存方式;但是对有些查询结果集较大,数据库和Web容器之间的网络访问由可能是远程的,这时候可考虑使方式2(或者方式3)。

测试用例代码实现说明

一:测试用例3-ServletQueryForConnPool 版本

1.结构图

2.代码实现结构


3.运行时序图

4.测试运行情况说明

4.1 数据库连接和数据库游标占用可能比较大

由于数据库的查询及其分页处理是直接使用JDBC的,并在分页中是使用RseultSet的查询结果集-游标形式实现的,并且每个客户对应一个会话,每个会话对应一个数据库连接和一个结果集(游标),数据库连接和游标是在会话终止时才释放的。因此在多个客户的请求过程中,可能对数据库的访问资源(数据库连接和用于数据操作的游标)占用比较大。

因此数据库访问及其数据库的处理可能是个瓶颈。

4.2 资源没有释放的问题

会话对应的数据库连接和游标可能在会话终止时没有释放。

为了更好的体现出使用Web容器数据库连接池的优点,应该合理的设置连接池中连接对象的“非活动超时时间”,建议次值和Servlet对象的会话超时时间长度一直。

5.此测试用例操作说明

5.1 部署的包的位置:

ServletQueryForConnPool.war

5.2 部署

1.通过Weblogic 的控制台工具部署此包

2.相关的参数请看ServletQueryForConnPool.war包中的配置文件web.xml中相应的servlet配置参数

5.3 测试URL

Http://Server:port/WebAppName

即:

Http://Web服务器名:端口/Servlet部署的应用程序名

二:测试用例4 ServletQueryForConnPool_cache 版本

1.结构图

和“一:测试用例3”相同

2.代码实现结构

3.运行时序

说明:使用第四种“缓存一次SQL查询的结果集”的分页面查询技术,即一次SQL查询,把从数据库查询出来的结果保存到会话中,以后的客户分页查询操作都从此缓存中取得。

4.测试运行情况说明

由于使用的是缓存结果集的方式,对Web容器服务器的内存要求比较高,可能在测试过程中,Web容器服务器因内存问题而影响整个系统的响应性能。

5.此测试用例操作说明

5.1 部署的包的位置:

ServletQueryForConnPool_cache.war

其他情况参照 “一:测试用例 3 ServletQueryForConnPool.war, 基本一致。


上一页  1 2 
  • 上一篇教程: 漫步j2ee之jsp技术(1)
  • 下一篇教程: 缓存JSP显示的内容
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.