当前位置: 首页 > 面试题库 >

DisplayTag分页与休眠分页

谢涵亮
2023-03-14
问题内容

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

显示广告代码:我需要根据过滤条件提取所有记录并将其存储在会话中。然后这个displaytag将负责所有分页和排序。因此Httpsession拥有很多数据。

hibernate:它仅从数据库中获取请求的对象数,无需为每个请求打开会话。

最好的做事方法是什么?或者如果我们都能达成目标,该怎么做?请帮忙。


问题答案:

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

另一方面,通过Hibernate,您可以使用setFirstResultsetMaxResult提取仅在每个页面上实际显示的记录。这要求对每个页面执行查询,但将扩展为无限数量的结果。

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

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

而且,如果您需要所有结果(例如出于报告目的),那么我认为DisplayTag和全状态会话都不是正确的工具。



 类似资料:
  • 问题内容: 我正在尝试对查询使用Hibernate分页(PostgreSQL) 我设置,我的SQL查询。我的代码如下: 但是当查看SQL Hibernate日志时,我仍然看到完整的SQL查询: 为什么在Hibernate分页SQL日志查询中没有LIMIT OFFSET? 有人知道Hibernate分页机制吗? 我猜Hibernate将选择所有数据,将数据放入Resultset,然后在Results

  • 问题内容: 如果我能以某种方式将这两个框架结合在一起,那就太酷了。 单击Primefaces数据表上的下一个或上一个按钮将触发查询,从而使用JPA限制查询结果。 同样,也许通过某种机制,primefaces组件也可以从另一个JPA选择计数查询中获取总页数。 有没有关于如何将它们投入工作的示例? 请分享您的经验。 谢谢 ! 问题答案: 您可以使用LazyDataModel。在此示例中,我将使用Net

  • 问题内容: 我将GWT用于UI,将Hibernate / Spring用于业务层。以下GWT小部件用于显示记录。(http://collectionofdemos.appspot.com/demo/com.google.gwt.gen2.demo.scrolltable.PagingScrollTableDemo /PagingScrollTableDemo.html )。我认为排序是在客户端完成

  • 问题内容: 细节 来自应用程序的HQL查询: 查询返回300万条记录,而对于分页,我们仅设置了其中的50条记录,分页页面的运行速度非常慢,因为每次刷新时,我们都调用查询来获取300万条记录,而其中只有50条记录。 我的主要问题是 HQL是始终运行并命中数据库还是运行命中会话或内存以查找数据,如果它每次都运行时命中数据库并获取结果集,那么从性能的角度来看,这是非常合适的,什么是改进的最佳解决方案它?

  • 问题内容: 我使用 hibernate* / JPA 实现 服务器端数据分页 ,底层数据库是 MS SQL Server 2008。 * SQL生成如下: (主要工作在于创建适当的过滤器/排序,但这与此处无关) 我正在观察的是以下SQL: … 等等。 显然,如果基础结果集太大,这(a)会遇到严重问题,而(b)与分页根本没有太大关系:-( 有人遇到过同样的问题吗? 更新 :似乎NHibernate(

  • 休眠与唤醒 [HW,ACPI] acpi_sleep={s3_bios,s3_mode,s3_beep,s4_nohwsig,old_ordering,nonvs,sci_force_enable} ACPI休眠选项。 (1)s3_bios和s3_mode与显卡有关。计算机从S3状态(挂起到内存)恢复时,硬件需要被正确的初始化。这对大多数硬件都不是问题,但因为显 卡是由BIOS初始化的,内核无法获