gpt4 book ai didi

hibernate - DisplayTag 分页与 Hibernate 分页

转载 作者:行者123 更新时间:2023-12-03 08:03:14 27 4
gpt4 key购买 nike

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

显示标签:
我需要根据过滤条件获取所有记录并将其存储在 session 中。然后这个 displaytag 会负责所有的分页和排序。所以 Httpsession 保存了很多数据。

hibernate :
它只从数据库中获取请求的对象数。需要为每个请求打开 session 。

最好的方法是什么?或者如果我们能做到这两件事怎么做?请帮忙解决这个问题。

最佳答案

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

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

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

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

如果您需要所有结果,例如用于报告目的,那么我认为 DisplayTag 和有状态 session 都不是正确的工具。

关于hibernate - DisplayTag 分页与 Hibernate 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3143408/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com