Hibernate3和MyBatis(iBatis)的执行效率比较

大湿胸 发布于 2011/01/29 10:12
阅读 12K+
收藏 13

刚看了偏文章,感觉挺不错的,主要是后面那个测试工具挺实用,跟大家分享下

本文旨在提供一些真实的数据,供那些选择Hibernate3还是MyBatis做持久层的开发人员一个参考。数据在选择的时候,会删除一个最大值和最小值。 

1.从代码的编写量 
二者实现相同的功能: 
Hibernate3持久层用了207行Java代码,14行映射文件,18行Hibernate配置文件 
MyBatis持久层用了163行Java代码,36行映射文件,19行MyBatis配置文件 
所以从编码的角度我比较推荐MyBatis,因为它将Java代码和Sql做了映射,编码非常清晰。当然对于复杂的sql,无论是Hibernate还是MyBatis,解决起来都够复杂的。 

2.增加数据 
Hibernate3增加1000条数据,平均每条耗时:27.6毫秒(具体数据:27000,26265,29609,27797,23938,30313,28375) 
MyBatis增加1000条数据,平均每条耗时:28.4毫秒(具体数据:29079,29359,31016,26375,26281,32475,24375) 
Hibernate3增加2000条数据,耗时61875毫秒,平均每条耗时30.9毫秒 
MyBatis增加2000条数据,耗时55515毫秒,平均每条耗时27.7毫秒 
Hibernate3增加5000条数据,耗时139500毫秒,平均每条耗时28.2毫秒 
MyBatis增加5000条数据,耗时127672毫秒,平均每条耗时25.5毫秒 
Hibernate3增加10000条数据,平均每条耗时28.1毫秒(具体数据:294922,274000,277109) 
MyBatis增加10000条数据,平均每条耗时26.9毫秒(具体数据:260343,272687,270031) 
综上: 
Hibernate3增加44000条数据,共用时:1240703,平均每条耗时:28.1 
MyBatis增加44000条数据,共用时:1185209,平均每条耗时:26.9 
抓图如下: 
 
 

3.删除数据 
Hibernate3在44000条数据中,随机删除一条数据,耗时:41毫秒 
MyBatis3在44000条数据中,随机删除一条数据,耗时:40.1毫秒 
抓图如下: 
 
 

4.修改数据 
也许是测试次数太少,在修改这方面,我认为数据还是存在一定偏差。 
Hibernate3随机修改一条数据,耗时:18.1毫秒 
MyBatis随较修改一条数据,耗时:3.2毫秒 
抓图如下: 
 
 

5.查询数据 
Hibernate3随机查询一条数据,耗时:12.2毫秒 
MyBatis随较查询一条数据,耗时:5.6毫秒 
抓图如下: 
 
 

6.删除所有数据 
Hibernate3删除45991条数据,耗时:812毫秒,平均每条56.6毫秒 
MyBatis删除46259条数据,耗时:906毫秒,平均每条51.0毫秒 
抓图如下: 
 
 

7.回收表空间 
Hibernate3回收表空间,耗时62毫秒 
MyBatis回收表空间,耗时62毫秒 
这里需要说一下的是,Hibernate3中不能利用映射删除表空间,只能直接执行sql,具体可以参考文章:http://javapub.javaeye.com/blog/876147 
所以二者的回收方法都是同时执行sql,自然速度一致。 
抓图如下: 
 
 

8.源码下载 
MyBatis测试源码:http://www.zakisoft.com/wp-content/plugins/download-monitor/download.php?id=12 
Hibernate3测试源码:http://www.zakisoft.com/wp-content/plugins/download-monitor/download.php?id=13

工具可以到 http://www.kutoku.info/software/2011/01/ZTestDao.zip 下载。原文中的下载地址里,因为附件太大,只有源码没有类库。

运行时先运行 
/ZTestDao/src/com/zakisoft/workspace/initcompt/ibs/dao/user.sql
/ZTestDao/src/com/zakisoft/workspace/initcompt/hib/dao/user2.sql
创建两个测试表

然后配置MyBatis数据库连接:/ZTestDao/src/Configuration.xml
配置Hibernate3数据库连接:/ZTestDao/src/hibernate.cfg.xml

配置Spring配置文件:/ZTestDao/src/bean-config.xml,控制持久层使用Mybatis还是Hibernate3

运行/ZTestDao/src/com/zakisoft/workspace/Index.java就可以看到页面了。

加载中
0
r
roywang
图挂了?
0
黄灿贤
Hibernate3持久层用了207行Java代码,14行映射文件,18行Hibernate配置文件 

MyBatis持久层用了163行Java代码,36行映射文件,19行MyBatis配置文件 

================================

这个不知道楼主是否用了注解和把其中一些公用的方法使用泛型抽出来

0
绝版小西瓜
绝版小西瓜
感觉这样的比较没有意思,我只说我经手的项目,一般查询400以上有可能,但是你让我增加400条记录概率和中彩票一样低,除非批量导入数据
返回顶部
顶部