[英]Large JSF dataTable backed by database that can handle paging/sorting
如果有大量的表格数据,我试图在JSF数据表中显示。 是否有任何可以处理数据库分页和排序的实现或组件?
我目前必须将表中的所有行拉回来并在JSF中处理分页和排序客户端。 不幸的是,这不是很高效,偶尔会导致我的应用服务器内存不足。
理想情况下,这个数据表实现能够以某种方式包装JDBC查询或Hibernate查询。 我没有坚持使用JSF 1.2,如果这很重要,我计划很快升级到2.0。
当Java代码在Java内存中拖拽/复制数据存储区(例如RDBMS)的整个数据集,然后使用Java代码在Java内存中进行排序和过滤时,您将始终遇到内存问题。 当您将它存储在Web应用程序的会话范围中时,它会变得更糟。
最节省内存的方法是让DB完成发明它的任务。 SQL语言为每个ORDER BY
子句提供排序, WHERE
子句进行过滤,(DB供应商特定) LIMIT/OFFSET
子句/子选择/函数只返回基于firstrow和rowcount的记录子集或拉斯特罗 。 这样,您最终只得到Java内存中实际要显示的数据集。
没有标准的JSF组件可以做到这一点。 它总是要求整个数据集在Java内存中可用,因为过滤和排序需要使用纯Java代码或Javascripts。 JSF对SQL一无所知,您需要向数据表提供javax.faces.model.DataModel
的自定义实现和/或自己控制/管理数据访问层中的数据。 您可以获得许多新的见解/想法,并在本文中找到启动示例。 您还可以在此处发布的此JSP目标答案中找到所需SQL查询的示例。
祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.