首先,建数据库表,采用MySQL数据库。
CREATE TABLE `t_jobstat` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`jobNo` varchar(45) DEFAULT NULL,
`clickSum` int(10) unsigned DEFAULT NULL,
`showSum` int(10) unsigned DEFAULT NULL,
`mailSum` int(10) unsigned DEFAULT NULL,
`locationid` varchar(10) DEFAULT NULL,
`logdate` char(8) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7320077 DEFAULT CHARSET=gbk MAX_ROWS=500000000;
其次,插入大批量数据,本次测试,插入730万条数据。
一.Jdbc测试
主要方法如下:
1.数据访问层
/**
* 检索前1000条记录
* @return
* @throws SQLException
*/
public List<Jobstat> findAll() throws SQLException {
String sql = "select * from t_jobstat where locationid like '%530%' limit 0,1000 ";
// 执行查询
ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
// 将查询结果组装至Asset实体对象
Jobstat jobstat = null;
List<Jobstat> list = new ArrayList<Jobstat>();
while (rs.next()) {
jobstat = new Jobstat();
jobstat.setId(rs.getInt("id"));
jobstat.setJobNo(rs.getString("jobNo"));
jobstat.setClickSum(rs.getInt("clickSum"));
jobstat.setShowSum(rs.getInt("showSum"));
jobstat.setMailSum(rs.getInt("mailSum"));
jobstat.setLocationId(rs.getString("locationId"));
jobstat.setLogdate(rs.getString("logdate"));
list.add(jobstat);
jobstat = null;
}
return list;
}
2.Action层
/**
* 检索前1000条记录
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward findTop(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception{
JobstatDAO dao = new JobstatDAO();
long start = System.currentTimeMillis();
List<Jobstat>list = dao.findAll();
request.setAttribute("results", list);
long end = System.currentTimeMillis();
System.out.println("取出前1000条数据组装为对象,花费时间为"+(end-start)+"ms");
return mapping.findForward("top");
}
3.我们打开一个测试页面,http://localhost:8080/jdbctest/jobstat.do?p=findTop
然后将默认浏览器设为能打开多Tab页的遨游,狂点测试页,最后数据取出速度稳定在16ms左右。
二.Hibernate Test
1.DAO访问层
public static void main(String[] args) throws UnsupportedEncodingException{
session = HibernateUtil.currentSession(); // 开启连接
long start = System.currentTimeMillis();
String queryString = "from Jobstat as js";
Query queryObject = session.createQuery(queryString);
int pageNo =0;
pageNo = new Random().nextInt(10);
queryObject.setFirstResult(1000*pageNo);
queryObject.setMaxResults(1000*(pageNo+1));
List list = queryObject.list();
long end = System.currentTimeMillis();
System.out.println("随机取出前1000条数据组装为对象,花费时间为"+(end-start)+"ms");
}
2进行数据量测试,当数据库中未建主键测试中,取出1000条数据花费时间为680ms,当主键索引存在后,取出1000条数据花费时间为530ms
综上测试,
Hibernate作为一个O/R Mapping,比JDBC具备的优势有:
1.编程思想上,更加符合人的逻辑思维习惯,面向对象比面向过程更加容易理解,测试和维护
2.开发维护速度上,Hibernate显著的快,代码量显著小
3.通过Annotation进行数据库的字段加密
4.对Sql不熟的菜鸟来说可以自动调优
5.结合Spring,通过声明式事务可以省略事务的控制,事务以横切面形式出现
Jdbc比Hibernate具备的优势有:
1.大数据量访问时,Jdbc的效率显著快
2.直接操作数据库比较灵活
Hibernate比Jdbc慢的地方:
1.将Hql语句转化为标准Sql语句,花费时间可以忽略不急
2.将ResultSet中数据组装为实体对象,如果即所得数据量比较大(比如一次检索1000条数据),这是效率就会降低,在组装实体对象花费时间较长
检索单表的1000条数据,Hibernate与Jdbc均不会超过1S钟.
分享到:
相关推荐
1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2...
1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2...
1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2...
部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得...
1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2...
1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2...
1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得...
1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得...
* 数据持久层使用SpringBoot自带的Hibernate来维护PO(Persistent Object持久化对象),这里使用Hibernate的原因在于其三种对象状态(持久态、游离态、分割态)便于持久化对象的增删改查等一系列操作,取代了jdbc的...
在项目中,Spring框架提供了依赖注入和面向切面编程的功能,可以提高代码的可维护性和可测试性。SpringMVC负责处理请求和响应,可以实现灵活的URL映射和请求处理。MyBatis或Hibernate可以简化数据库操作,提供了方便...
MyEclipse可以支持Java Servlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。
MyEclipse企业级工作...MyEclipse可以支持Java Servlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具
MyEclipse可以支持Java Servlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。
最近在深入学习hibernate,在进行批量操作时,发现...于是就想找一个性能较高的方法,在对jdbc、jdbcTemplate、hibernate进行测试后,发现jdbc的执行效率是最高的,jdbcTemplate也很相近,hibernate就不考虑了,惨不忍睹啊
MyEclipse目前支持Java Servlet, AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。 MyEclipse 10 使用高级...
性能测试,根据网友对其它持久层框架(SpringJDBC,Mybatis,Hibernate)的测试,1万条数据查询前1000条数据(网友测试),并循环执行求平均时间。 同样的测试方式,FastBuilder使用20万条数据查询前1000条数据(20倍的数据...
电信采集系统: (理解) 1.adsl拨号 (操作) 2.... 1.... 备份(一旦有上线或者下线,就向日志文件写入一条数据... (jdbc hibernate) 6.要注意对事务的把握 7.Thread的把握 8.效率 9.边写边测试 备份:backup
随着科学技术的进步和计算机行业的迅速发展,人们的工作效率得到大大提 高。计算机信息处理系统的引进已彻底改变了许多系统的经营管理。 图书管理系统是学校管理机制中的重要组成部分,通过对图书馆管理系统的 运行...
而CGI效率相对较低,所以也不考虑。由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为...
深圳电信培训中心 徐海蛟...MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。