繁体   English   中英

由可以处理分页/排序的数据库支持的大型JSF dataTable

[英]Large JSF dataTable backed by database that can handle paging/sorting

如果有大量的表格数据,我试图在JSF数据表中显示。 是否有任何可以处理数据库分页和排序的实现或组件?

我目前必须将表中的所有行拉回来并在JSF中处理分页和排序客户端。 不幸的是,这不是很高效,偶尔会导致我的应用服务器内存不足。

理想情况下,这个数据表实现能够以某种方式包装JDBC查询或Hibernate查询。 我没有坚持使用JSF 1.2,如果这很重要,我计划很快升级到2.0。

看看RichFaces的数据表的数据表与表筛选和表排序还是扩展数据表

但是,是的,我忘了一个小注释:),如果你需要去数据库并在db级别上处理你的过滤/排序,你需要通过扩展org.ajax4jsf.model.SerializableDataModel来提供你自己的DataModel实现。

有一些博客就是这样,看到这个

当Java代码在Java内存中拖拽/复制数据存储区(例如RDBMS)的整个数据集,然后使用Java代码在Java内存中进行排序和过滤时,您将始终遇到内存问题。 当您将它存储在Web应用程序的会话范围中时,它会变得更糟。

最节省内存的方法是让DB完成发明它的任务。 SQL语言为每个ORDER BY子句提供排序, WHERE子句进行过滤,(DB供应商特定) LIMIT/OFFSET子句/子选择/函数只返回基于firstrowrowcount的记录子集或拉斯特罗 这样,您最终得到Java内存中实际要显示的数据集。

没有标准的JSF组件可以做到这一点。 它总是要求整个数据集在Java内存中可用,因为过滤和排序需要使用纯Java代码或Javascripts。 JSF对SQL一无所知,您需要向数据表提供javax.faces.model.DataModel的自定义实现和/或自己控制/管理数据访问层中的数据。 您可以获得许多新的见解/想法,并在本文中找到启动示例。 您还可以在此处发布的此JSP目标答案中找到所需SQL查询的示例。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM