本文旨在提供一些真实的数据,供那些选择Hibernate3还是MyBatis做持久层的开发人员一个参考。数据在选择的时候,会删除一个最大值和最小值。
[b]1.从代码的编写量[/b]
二者实现相同的功能:
Hibernate3持久层用了207行Java代码,14行映射文件,18行Hibernate配置文件
MyBatis持久层用了163行Java代码,36行映射文件,19行MyBatis配置文件
所以从编码的角度我比较推荐MyBatis,因为它将Java代码和Sql做了映射,编码非常清晰。当然对于复杂的sql,无论是Hibernate还是MyBatis,解决起来都够复杂的。
[b]2.增加数据[/b]
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)
综上:
[b]Hibernate3增加44000条数据,共用时:1240703,平均每条耗时:28.1[/b]
[b]MyBatis增加44000条数据,共用时:1185209,平均每条耗时:26.9[/b]
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate01.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis01.png[/img]
[b]3.删除数据[/b]
[b]Hibernate3在44000条数据中,随机删除一条数据,耗时:41毫秒[/b]
[b]MyBatis3在44000条数据中,随机删除一条数据,耗时:40.1毫秒[/b]
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate02.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis02.png[/img]
[b]4.修改数据[/b]
也许是测试次数太少,在修改这方面,我认为数据还是存在一定偏差。
[b]Hibernate3随机修改一条数据,耗时:18.1毫秒[/b]
[b]MyBatis随较修改一条数据,耗时:3.2毫秒[/b]
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate05.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis05.png[/img]
[b]5.查询数据[/b]
[b]Hibernate3随机查询一条数据,耗时:12.2毫秒[/b]
[b]MyBatis随较查询一条数据,耗时:5.6毫秒[/b]
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate06.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis06.png[/img]
[b]6.删除所有数据[/b]
[b]Hibernate3删除45991条数据,耗时:812毫秒,平均每条56.6毫秒[/b]
[b]MyBatis删除46259条数据,耗时:906毫秒,平均每条51.0毫秒[/b]
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate03.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis03.png[/img]
[b]7.回收表空间[/b]
[b]Hibernate3回收表空间,耗时62毫秒[/b]
[b]MyBatis回收表空间,耗时62毫秒[/b]
这里需要说一下的是,Hibernate3中不能利用映射删除表空间,只能直接执行sql,具体可以参考文章:[url]http://javapub.iteye.com/blog/876147[/url]
所以二者的回收方法都是同时执行sql,自然速度一致。
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate04.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis04.png[/img]
[b]8.源码下载[/b]
MyBatis测试源码:[url]http://www.zakisoft.com/wp-content/plugins/download-monitor/download.php?id=12[/url]
Hibernate3测试源码:[url]http://www.zakisoft.com/wp-content/plugins/download-monitor/download.php?id=13[/url]
[b]1.从代码的编写量[/b]
二者实现相同的功能:
Hibernate3持久层用了207行Java代码,14行映射文件,18行Hibernate配置文件
MyBatis持久层用了163行Java代码,36行映射文件,19行MyBatis配置文件
所以从编码的角度我比较推荐MyBatis,因为它将Java代码和Sql做了映射,编码非常清晰。当然对于复杂的sql,无论是Hibernate还是MyBatis,解决起来都够复杂的。
[b]2.增加数据[/b]
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)
综上:
[b]Hibernate3增加44000条数据,共用时:1240703,平均每条耗时:28.1[/b]
[b]MyBatis增加44000条数据,共用时:1185209,平均每条耗时:26.9[/b]
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate01.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis01.png[/img]
[b]3.删除数据[/b]
[b]Hibernate3在44000条数据中,随机删除一条数据,耗时:41毫秒[/b]
[b]MyBatis3在44000条数据中,随机删除一条数据,耗时:40.1毫秒[/b]
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate02.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis02.png[/img]
[b]4.修改数据[/b]
也许是测试次数太少,在修改这方面,我认为数据还是存在一定偏差。
[b]Hibernate3随机修改一条数据,耗时:18.1毫秒[/b]
[b]MyBatis随较修改一条数据,耗时:3.2毫秒[/b]
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate05.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis05.png[/img]
[b]5.查询数据[/b]
[b]Hibernate3随机查询一条数据,耗时:12.2毫秒[/b]
[b]MyBatis随较查询一条数据,耗时:5.6毫秒[/b]
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate06.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis06.png[/img]
[b]6.删除所有数据[/b]
[b]Hibernate3删除45991条数据,耗时:812毫秒,平均每条56.6毫秒[/b]
[b]MyBatis删除46259条数据,耗时:906毫秒,平均每条51.0毫秒[/b]
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate03.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis03.png[/img]
[b]7.回收表空间[/b]
[b]Hibernate3回收表空间,耗时62毫秒[/b]
[b]MyBatis回收表空间,耗时62毫秒[/b]
这里需要说一下的是,Hibernate3中不能利用映射删除表空间,只能直接执行sql,具体可以参考文章:[url]http://javapub.iteye.com/blog/876147[/url]
所以二者的回收方法都是同时执行sql,自然速度一致。
抓图如下:
[img]http://www.kutoku.info/images/java/11/01/18/hibernate04.png[/img]
[img]http://www.kutoku.info/images/java/11/01/18/ibatis04.png[/img]
[b]8.源码下载[/b]
MyBatis测试源码:[url]http://www.zakisoft.com/wp-content/plugins/download-monitor/download.php?id=12[/url]
Hibernate3测试源码:[url]http://www.zakisoft.com/wp-content/plugins/download-monitor/download.php?id=13[/url]