getHibernateTemplate 批量添加数据及简单测试
2015-09-11 17:38
483 查看
最近做的一个项目中,需要从execl中读取数据,然后保存到数据库中。以前,数据量小的时候,都是读一行,插入一行。但这次Execl中有上万条数据,每条数据还要去数据库中查询对比,所以时间更费时间,用原来的笨方法,时间太长了,无法忍受。后采用HibernateTemplate回调Hibernate的API函数,执行批量插入操作。
在配置文件中设置hibernate 批量插入的大小:
为了验证下,插入次数和速度有没有什么关系,做了个简单测试。(每条数据加入到session之前,需要去数据库中的另外一个表中做查询对比,所以这个实验说明有限)
数据量为 16277
第一次设置hibernate 每次批量插入数量为100,
则时间为
开始时间 :11 Sep 2015 08:26:06 GMT
结束时间 :11 Sep 2015 08:47:10 GMT
总时间为 21分钟左右。
第二次设置 每次批量插入的20,
开始时间 :11 Sep 2015 08:57:59 GMT
结束时间 :11 Sep 2015 09:20:19 GMT
总时间为 23分钟左右。
总体看来,简单提高批量插入的数量,对于降低时间也是有限的。
getHibernateTemplate().execute(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { session.beginTransaction(); for (data d : tempList) { session.save(d); } session.getTransaction().commit(); session.flush(); session.clear(); return null; } });
在配置文件中设置hibernate 批量插入的大小:
<prop key="hibernate.jdbc.batch_size">50</prop>
为了验证下,插入次数和速度有没有什么关系,做了个简单测试。(每条数据加入到session之前,需要去数据库中的另外一个表中做查询对比,所以这个实验说明有限)
数据量为 16277
第一次设置hibernate 每次批量插入数量为100,
则时间为
开始时间 :11 Sep 2015 08:26:06 GMT
结束时间 :11 Sep 2015 08:47:10 GMT
总时间为 21分钟左右。
第二次设置 每次批量插入的20,
开始时间 :11 Sep 2015 08:57:59 GMT
结束时间 :11 Sep 2015 09:20:19 GMT
总时间为 23分钟左右。
总体看来,简单提高批量插入的数量,对于降低时间也是有限的。
相关文章推荐
- 正则表达式需要转义的字符
- 反汇编
- imagebutton 设置了src属性的图片更换
- android Bluetooth程序设计
- 写写Matlab的Turbo仿真实现吧
- ARM汇编总结 MOV PC,LR
- java__线程通信
- java学习经典书籍_数据库篇
- 如何使用 iOS 7 的 AVSpeechSynthesizer 国家有声读物(4)
- 静态资源缓存常用的方式
- AFNetworking请求设置请求头
- 转:Jmeter之使用CSV Data Set Config实现参数化登录
- JavaScript - 知识点总结
- 安卓中按钮文字不显示
- java之int与integer的区别
- iOS开发——生成条形码,二维码
- 数据结构tip
- Win32汇编创建没有标题栏的窗体
- IO系统性能之一:衡量性能的几个指标
- 木头骑士的Linux编程实验室(三)——文件描述符的操作