简单说明下:用hibernate查询数据,OuterTask表记录越来越多(超4000条),感觉查询速度越来越慢.
已经用hibernate分页机制了,为什么还这么慢哦,恼火!
各位走过路过,一定要给点意见啊,谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢啦~
实际效果可见
http://www.ctask.cn/项目,别的menu一点就来,就它慢,个NN的。[再加个:数据库是mysql5.0]
package com.affectu.dao.pagination;
import java.util.List;
import org.hibernate.Session;
import com.affectu.category.Category;
import com.affectu.common.util.Helper;
import com.affectu.task.InnerTask;
import com.affectu.task.Task;
/**
* Oct 13, 2008
*
* @author daniel nathan
*/
public class CategoryTaskDataModel extends BaseDataModel<Task, Long> {
private Session em = Helper.getInstance().getSession();
// not use view for optimizing performance
private String sql = "select t1.* from OuterTask t1 where t1.tag regexp :tags union all select t2.* from InnerTask t2 where t2.tag regexp :tags order by publishDate desc ";
private String sqlCount = "select count(t.id) from ("
+ " select t1.id from OuterTask t1 where t1.tag regexp :tags union all select t2.id from InnerTask t2 where t2.tag regexp :tags ) t";
private Category category;
public CategoryTaskDataModel(Category category) {
this.category = category;
}
@Override
public Task findById(Long id) {
return (Task) em.get(Task.class, id);
}
@Override
public Long getCount() {
// TODO Auto-generated method stub
Long count;
count = Long.valueOf(em.createSQLQuery(sqlCount).setParameter("tags",
this.getTags()).uniqueResult().toString());
return count;
}
@SuppressWarnings("unchecked")
@Override
public List<Task> getList(Integer firstRow, Integer maxResults) {
// TODO Auto-generated method stub
return em.createSQLQuery(sql).addEntity("t", InnerTask.class)
.setParameter("tags", this.getTags()).setFirstResult(firstRow)
.setMaxResults(maxResults).list();
}
private String getTags() {
List<Category> children = category.getChildren();
String tags = "";
for (int i = 0; i < children.size(); i++) {
tags += "." + children.get(i).getName() + ".|";
}
tags += "." + category.getName() + ".";
tags = tags.replaceAll("[+]*", "");
return tags;
}
public void finalize() {
em.close();
}
public void destroy() {
em.close();
}
}
对应的entiy
package com.affectu.task;
import java.io.Serializable;
import javax.persistence.Entity;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.search.annotations.Indexed;
import org.jboss.seam.annotations.Name;
/*
* 2008-8-15
* @author daniel nathan
*/
@Entity
@Name("outerTask")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Indexed
public class OuterTask extends Task implements Serializable {
}
/*
* 2008-8-15
* @author daniel nathan
*/
//@Entity
@Name("task")
@MappedSuperclass()
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Task extends EntityBase implements Serializable {
@Field(name = "tag", index = Index.TOKENIZED, analyzer = @Analyzer(impl = ChineseAnalyzer.class))
private String tag;
private int budget;
private int bidDay;
private int finishDay;
@Temporal(value = TemporalType.TIMESTAMP)
private Date publishDate;
private String attachName;
private String url;
private Type type;
public enum Type {
INNER, OUTER
}
分享到:
相关推荐
她从20世纪90年代初就开始使用Oracle,从事 Oracle的教学工作也已经超过10年的时间。她是Oracle ACE,也是OakTable(Oracle社区中著名的“Oracle科学家”的非正式组织)的成员,经常在技术会议上演讲。她的著作还...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
学生可以通过系统对教师的授课内容、教学方法、课堂氛围等多个维度进行评价,系统能够实时收集这些评价数据,并进行统计分析,为教师提供直观的反馈报告。 在论文部分,详细阐述了系统的设计思路、实现过程以及技术...
本资源是一个基于SSM(Spring+SpringMVC+MyBatis)框架开发的Java汽车客运站管理系统,旨在通过现代化技术手段提升客运站的管理效率和服务水平。该系统采用B/S架构,前端使用JSP进行页面展示,后端则依托SSM框架实现...
数据运营 作用&意义 知错能改,善莫大焉 —错在哪里,数据分析告诉你 运筹帷幄,决胜千里 —怎么做好“运筹”,数据分析告诉你 以往鉴来,未卜先知 —怎么发现历史的规律以预测未来,数据分析告诉你 工作思维 对业务...
数据运营 作用&意义 知错能改,善莫大焉 —错在哪里,数据分析告诉你 运筹帷幄,决胜千里 —怎么做好“运筹”,数据分析告诉你 以往鉴来,未卜先知 —怎么发现历史的规律以预测未来,数据分析告诉你 工作...
Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...
PC6.com 为您收集整理,小编找的不容易,大家多多支持啊。。 2008-11-08 14:41 文件夹 文件夹 易语言模块大全 2005-10-21 15:30 14489 3100 易语言模块大全\24位转...2005-08-15 09:49 8584 2916 易语言模块大全\代码...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
书围绕着动态内存自动回收的话题,介绍了垃圾收集机制,详细分析了各种算法和相关技术。 本书共12章。第1章首先介绍计算机存储器管理的演化和自动内存回收的需求,并引入了本书所使用的术语和记法。第2章介绍了3...
提升您的Go编程技能,以开发更快,更高效的代码 这本书是关于什么的? Golang是软件行业中增长最快的编程语言之一。 它的速度,简单性和可靠性使其成为构建强大应用程序的理想选择。 这就需要使用Go建立扎实的数据...
本资源是一个基于SSM(Spring+SpringMVC+MyBatis)框架开发的Java汽车客运站管理系统,旨在通过现代化技术手段提升客运站的管理效率和服务水平。该系统采用B/S架构,前端使用JSP进行页面展示,后端则依托SSM框架实现...
,S003,,,,, D004,数据字典,数据字典分为面向前台业务和面向后台系统状态的,并且有的字典数据无法在设计时就收集齐全。充分收集字典数据可以用于更好的向开发者阐明系统的数据状态变化逻辑。,开发者对字典数据理解...
性能负载能力和稳定性大幅优化针对大访问量情况下,收集到各类性能瓶颈点,新版进行了集中优化和改进,其中包括:采用全新的帖子查看数更新机制,解决大访问量情况下,因瞬间大批量更新主题表造成的MySQL死锁的问题;...
书围绕着动态内存自动回收的话题,介绍了垃圾收集机制,详细分析了各种算法和相关技术。 本书共12章。第1章首先介绍计算机存储器管理的演化和自动内存回收的需求,并引入了本书所使用的术语和记法。第2章介绍了3...
Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...
简介Super-Jacoco是基于Jacoco,git二次开发打造的一站式JAVA代码全量/ diff覆盖率收集平台,能够解决,无侵入的收集代码覆盖率数据。Super-Jacoco除支持JVM运行时间段的覆盖外率收集外;还能够和环境无缝对接,收集...
Twitter开源了数据实时分析平台Heron。Twitter使用Storm实时分析海量数据已经有好几年了,并在2011年将其开源。该项目稍后开始在Apache基金会孵化,并在2015年秋天成为顶级项目。Storm以季度为发布周期,并且向着...