【发布时间】:2016-02-23 19:09:38
【问题描述】:
我正在使用 spring mvc 4、thymeleaf 和 mysql(jdbc 不使用 hibernate 或 JPA)构建一个 Web 应用程序。我正在尝试进行分页和排序,但我认为我在理解它时遇到了问题。
当我使用 spring mvc 搜索分页时,我只能找到 PagedListHolder 和 MutableSortDefinition,但我认为这不是正确的方法,因为它会为每个请求加载服务器内存中所有数据的列表,是对吗?如果是这样,那么鉴于有数十万条记录(一个多月的房地产广告,每天将近 2500 个广告),实现分页和排序的最佳方法是什么
那么,有人可以举一个真实的例子来说明如何以一种可用于大数据应用程序的方式实现分页和排序吗?
【问题讨论】:
-
如果您希望您的数据在表格中表示,我可以建议您Dandelion Datatables。这个框架(建立在 JQuery Datatable 之上)有很多可以使用的特性(比如分页、排序等)。由于“服务器端处理”功能,它适用于大数据。我们用它来代表超过一百万个条目,一切都很好。我写的是关于客户端的,顺便说一句:)
-
Thx enigo .. 我检查了它,它看起来不错且易于使用 .. 所以它在具有百万条目的高流量下运行良好(在页面加载速度、内存和 CPU 消耗方面)? .. 也出于好奇,你知道 pagedListHolder 是如何工作的吗?我的意思是它是否真的为每个用户加载了内存中的所有对象(因为它通常保存在会话属性中)?我的意思是,如果您有数千条记录(甚至不是数万条)并且有数千个并发用户和会话,那么服务器会因过载而爆炸,对吗?
-
是的,它的工作速度与您的服务器端能够发回结果的速度一样快。用于此类任务的 Datatable 的关键特性是“服务器端处理”。基本上,它只允许您获取一个特定页面的条目,而不是数万个。但另一方面,用户执行的每个操作(选择下一页\上一页、排序等)都是在服务器端完成的。所以,任务是让服务器工作得非常快。不幸的是,我对 pagedListHolder 一无所知,根据谷歌搜索结果,它似乎不是很受欢迎:)
-
我很好奇你有没有尝试过我的建议?)
标签: sorting spring-mvc pagination spring-jdbc