使用hibernate在5秒内插入11万条数据,你觉得可能吗?

需求是这样的,需要查询某几个表的数据,然后插入到另外一个表。

一看到需求,很多人都会用hibernate去把这些数据都查询出来,然后放到list中,

然后再用for循环之类的进行遍历,一条一条的取出数据对对象进行赋值,然后在调用dao层的save 方法进行保存对象。

hibernate保存一条数据是在35毫秒左右,咱们来计算下时间:

35*110000=3850000 毫秒

3850000/1000=3850秒

3850/60=64.1666666分钟,

如果咱们使用hibernate的话,那么要执行一个多小时,这根本就无法体现出效率了,而且这么大的数据,服务器的压力也不小。

好啦,上面说了这么多,咱们来看看实际的操作。

测试的数据库是MSSQL,MYSQL速度也是差不多的


我建立了一个表,表里有115546条数据。11万


然后我又建了了一个表,两个表结构完全不同。


我这里是直接使用sql语句进行数据插入,看代码:

 

insert into test(name) select s.address from Student s

 

使用了insert into select 语句,其实也就是相当于复制而已。

这时候,咱们就可以用hibernate来创建查询,执行改条sql语句了

这样的效率非常的高,我插入11万条数据,只用了5秒钟。而上面的方法却用时超过1个小时。

截图:




 

posted @ 2013-08-03 21:37  坚固66  阅读(326)  评论(0编辑  收藏  举报