到目前为止,我们在Dojo datagrid上提供了客户端排序。现在我们需要增强服务器端排序,这意味着排序应该应用于网格上的所有页面。我们在主表上加入了4个表,到目前为止有2个lac记录,而且可能会增加。当执行SQL时,它需要5-8分钟的时间来获取所有记录到我的java代码,我需要在他们上应用一些计算,我提供了使用比较程序的自定义排序。我们有每个比较器来表示每一列。
我担心的是如何在短时间内将整个数据转换为服务层代码?有没有办法通过配置数据源来提高执行速度?
return new Comparator<QueryHS>() {
public int compare(QueryHS object1, QueryHS object2) {
int tatAbs = object1.getTatNb().intValue() - object1.getExternalUnresolvedMins().intValue();
String negative = "";
if (tatAbs < 0) {
negative = "-";
}
String tatAbsStr = negative + FormatUtil.pad0(String.valueOf(Math.abs(tatAbs / 60)), 2) + ":"
+ FormatUtil.pad0(String.valueOf(Math.abs(tatAbs % 60)), 2);
// object1.setTatNb(tatAbs);
object1.setAbsTat(tatAbsStr.trim());
int tatAbs2 = object2.getTatNb().intValue() - object2.getExternalUnresolvedMins().intValue();
negative = "";
if (tatAbs2 < 0) {
negative = "-";
}
String tatAbsStr2 = negative + FormatUtil.pad0(String.valueOf(Math.abs(tatAbs2 / 60)), 2) + ":"
+ FormatUtil.pad0(String.valueOf(Math.abs(tatAbs2 % 60)), 2);
// object2.setTatNb(tatAbs2);
object2.setAbsTat(tatAbsStr2.trim());
if(tatAbs > tatAbs2)
return 1;
if(tatAbs < tatAbs2)
return -1;
return 0;
}
};发布于 2013-10-30 18:35:36
您不应该将数据库中的所有2lac记录提取到您的应用程序中。您应该只获取所需的内容。
正如您所说的,您在主表上连接了4个表,您必须为它们提供Hibernate实体类以及它们之间的对应映射。使用分页技术仅获取您向用户显示的行数。Hibernate知道如何在您的特定数据库上高效地执行此操作。
您甚至可以在HQL中使用聚合函数:count(), min(), max(), sum(), and avg()来获取相关数据。
https://stackoverflow.com/questions/19651682
复制相似问题