使用hibernate前后的效率对比

本文通过实验对比了使用Hibernate与直接使用mysql-connector在数据插入、读取、更新和删除操作上的效率。测试环境包括CPU E6500、2G DDR2内存、WinXP、MySQL5.1.46、MyEclipse6.5和Hibernate3.2。结果显示,批量操作时直接使用数据库连接器效率更高,而单一操作 Hibernate 效率更优。结论指出,Hibernate适合非大批量操作,而数据库连接器更适合批量任务。

      本文只从实验层面对使用hibernate前后数据操作做了测试,并记录测试数据,以直观的形式对效率做了对比。

 

下面对试验环境进行简要的说明:

      硬件: CPU,E6500,2.33GHZ; 内存,DDR2,2G;

      操作系统: WinXP HOME版;

      数据库软件:MySQL5.1.46; java下MySQL驱动,mysql-connector-java-5.1.12

      实验代码环境:MyEclipse6.5;hibernate3.2;

 

实验方案:

     1.使用hibernate分别插入(读取,更新,删除)1条,10条,100条,1000条数据,记录所用的时间;

     2.直接使用mysql-connector插入(读取,更新,删除)1条,10条,100条,1000条数据,记录所用时间;

 

测试使用的表的定义:

 


测试数据:

   插入:id字段递增,其它三个字段保持不变;

   读取:根据id字段提取数据;

   更新:将name字段更换为其它的数据;

删除操作在插入数据的基础上进行

 

测试结果:

1.插入数据测试:

读取数据量hibernate(ms)connector(ms)批量connector(ms)
1条944715-47
10条9447-63219-266
100条141-15631-622281-2313
1000条469-531172-20320313-23266

 

注释:由于测试前数据已全部生成,因此用mysql测试时,使用了两种不同的方式:一种是批量的形式,即PreparedStatement 的executeBatch方法;一种是逐一插入,即Statement的execute方法;

 

2.读取数据测试:

读取数据量hibernate(ms)connector(ms)批量connector(ms)
1条6300
10条7800-16
100条156-172015-32
1000条688-78116156-172

注释:这里测试选择的数据是连续的,即从Id的一个连续范围内(比如0-100)全部选取。因此这里的批量实际用一条sql语句完成。第三组测试数据是将选择范围的数据一一提取得到的,即提取一个数据就执行一个sql语句。

 

3.更新数据测试:

更新数据量hibernate(ms)connector(ms)批量connector(ms)
1条93-125 15-47 31-63
10条93-12531-47 188-235
100条140-15747 1937-2031
1000条 485-51647-78 23172- 23469

 注释:同读取数据测试说明一致。

 

4.删除数据测试:

删除数据量hibernate(ms)connector(ms)批量connector(ms)
1条93-10931-4731-47
10条109-15616172-203
100条218-23531-471828-2078
1000条 1000-1047 4717750-19453

注释:同读取数据测试说明一致

 

总结:

     如果应用程序中批量操作占的比例很大,直接使用connector效率更高,毕竟可以一次性交给数据库处理;否则的话,还是使用hibernate效率更高。同时也可以看到,无论何种情况,直接使用connector对数据逐一提交效率都是最低的。从实验数据的对比来看,hibernate更像一个折衷的方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值