首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DisplayTag分页与Hibernate分页

DisplayTag分页与Hibernate分页
EN

Stack Overflow用户
提问于 2010-06-30 01:56:47
回答 2查看 5.1K关注 0票数 4

显示标签提供了给定对象的分页功能。Hibernates提供了只获取每个page.In所需记录的选项,我的项目我们正在使用这两个概念。

显示标签:我需要根据过滤条件获取所有记录,并将其存储在会话中。然后这个displaytag将负责所有的分页,并且sorting.So Httpsession保存了大量数据。

Hibernate:对于每个请求,它只从database.Need获取所请求的数目个对象,以打开会话。

最好的方法是什么?或者如果我们能做到这两件事,该怎么做?请在这方面提供帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-30 05:07:14

正如您所概述的,使用DisplayTag时,您需要获取所有的结果并将它们放入会话中。因此,您只执行了一个(可能很昂贵的)查询,但是从内存的角度来看,这不能很好地扩展(如果您需要获取大量结果,或者如果您增加了并发用户数)。

另一方面,使用Hibernate,您可以使用setFirstResultsetMaxResult来获取每个页面上实际显示的记录。这需要对每个页面执行一次查询,但将扩展到无限数量的结果。

就我个人而言,我更喜欢第二种方法,我发现这种方法内存效率更高-特别是因为大多数用户并不浏览所有页面(所以为什么要加载所有结果)-并使用Pagination in Hibernate and EJB3中描述的模式。

如果您决定坚持第一种方法,我将实现某种最大结果数限制,以避免过于昂贵的查询。如果查询超出了限制,要求用户执行更严格的搜索,即添加条件(不管怎样,谁来浏览几千个结果呢?)

如果您需要所有结果,例如用于报告目的,那么在我看来,DisplayTag和statefull会话都不是合适的工具。

票数 4
EN

Stack Overflow用户

发布于 2011-04-14 22:32:34

实际上你不需要获取所有的结果,你可以使用一个叫做外部分页的Displaytag特性,在这里你告诉Displaytag你正在Displaytag外部处理分页。

有关详细信息,请参阅Displaytag文档中的External Paging and Sorting

此外,this stackoverflow question还有更多信息和示例代码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3143408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档