Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对后端中的所有功能进行排序。(MySql和Hibernate)_Java_Mysql_Hibernate_Sorting - Fatal编程技术网

Java 对后端中的所有功能进行排序。(MySql和Hibernate)

Java 对后端中的所有功能进行排序。(MySql和Hibernate),java,mysql,hibernate,sorting,Java,Mysql,Hibernate,Sorting,我正试图找到在我的应用程序中实现所有排序功能的最佳方法,我想在UI(ExtJs)上进行升序和降序。它每次显示25条记录,用户可以使用UI中的50或100条记录 由于应用程序中存在一个现有功能,但它会对25,50100条记录的给定列表进行ASC或DESC排序,而不是对数据库中的所有给定记录进行排序 根据网上提供的一些建议,有些人说让hibernate来处理,有些人说让后端来处理 但我认为这种方法稍微复杂一些,因为应用程序从许多不同的表中派生数据,所以我们现在正在对一个字段rest进行排序,稍后我们

我正试图找到在我的应用程序中实现所有排序功能的最佳方法,我想在UI(ExtJs)上进行升序和降序。它每次显示25条记录,用户可以使用UI中的50或100条记录

由于应用程序中存在一个现有功能,但它会对25,50100条记录的给定列表进行ASC或DESC排序,而不是对数据库中的所有给定记录进行排序

根据网上提供的一些建议,有些人说让hibernate来处理,有些人说让后端来处理

但我认为这种方法稍微复杂一些,因为应用程序从许多不同的表中派生数据,所以我们现在正在对一个字段rest进行排序,稍后我们将加载对象图以提高性能

因此,如果你有任何见解,我们如何可以有一个开箱即用的方法,这将是真正有见地的为我

我使用Hibernate for ORM、Spring容器和MySql作为数据库


提前感谢

虽然Hibernate非常适合管理实体状态转换,但它不是分页或聚合的首选

在内存中对2500万条记录进行排序效率不高,因此您最好使用SQL进行排序,并使用适当的索引。如果您可以选择一个框架,您可以依靠它完成此任务。即使您不能选择JOOQ,您仍然可以使用本机查询并将结果投影到DTO


当您计划更改实体时,返回实体非常有用(创建更新删除),DTO为读取操作提供了更好的性能。如果操作得当,您甚至可以实现仅索引扫描。

Hi,@Vlad感谢您的及时回复,是的,我正在考虑使用SQL查询对所有记录进行排序,并将其交给Hibernate进行必要的更改,然后将其发送回UI(这取决于在我的例子中,25、50、100到ExtJs应该显示多少记录),但我正在考虑使用二级缓存或条件来限制实现相同的结果。您能不能在这里展示一些本机查询的示例(因为我们的项目现在不可能容纳JOOQ)?二级缓存仅按id存储实体,在执行实际查询时对您没有帮助。如果您按照我发送给您的JOOQ进行操作,您将看到您也可以使用本机SQL进行操作。使用偏移量,您需要保留最后一个最大处理值,并限制下一批。使用seek,您也需要保留最后一个最大处理id,以使选择更快。谢谢你。弗拉德,我会在我的申请中尝试使用Jooq,看看它是否能满足我的期望。如果你考虑我回答你的问题,你可以把它标记为答案。