`
fuchao01
  • 浏览: 8215 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

iBATIS3与JDBC性能对比

阅读更多
spring3.0昨天已经发布了第一个正式版本,看了下API DOC没有对于iBATIS3的支持,还是停留在iBATIS2.3上。进来一直在研究iBATIS,所以在此对iBATIS3和JDBC做了一个测试。同样是想本地的MySql数据库插入10W数据,测试结果以及代码如下:
1.JDBC
Connection con = null;
		PreparedStatement sta = null;
//		Statement sta = null;
		String sql = "INSERT INTO dbbean VALUES('na','nb','nc','nd','ne','nf','ng','nh','ni','nj','nk','nl','nm');";
		try {
			long start = System.currentTimeMillis();
			Class.forName("com.mysql.jdbc.Driver"); 
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
			con.setAutoCommit(false);
			sta = con.prepareStatement(sql);
			System.out.println("连接数据库耗时: "+(System.currentTimeMillis()-start)+"ms");
			for(int i=0;i<100000;i++){
//				sta.addBatch(sql);
				sta.execute();
			}
			con.commit();
			System.out.println("总共用时: "+(System.currentTimeMillis()-start)+"ms");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

2.iBATIS3

public class IBatisDAO{
	
	public SqlSessionFactory sqlMapper;
	
	public String resource = "ibatis_conf.xml";

	public void init(){
		
		Reader reader;
		try {
			reader = Resources.getResourceAsReader(resource);
			sqlMapper = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public SqlSessionFactory getSqlMapper() {
		this.init();
		return sqlMapper;
	}
}

ibatis_mapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="net.unison.ivr">
	<insert id="insert">
		insert into dbbean
		values('na','nb','nc','nd','ne','nf','ng','nh','ni','nj','nk','nl','nm')
	</insert>
</mapper>

ibatis_conf.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/test" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="ibatis_mapper.xml" />
	</mappers>
</configuration>

测试结果:
JDBC耗时:20563ms
iBATIS3耗时:26250ms
结论:看来还是最纯粹的数据库操作性能最好,对于一下orm框架,可能耗时在对xml的文件解析等方面。
分享到:
评论
3 楼 fuchao01 2012-03-23  
恩,这个是新性能,那时还没有呢
2 楼 yaohao803 2012-03-23  
在mybatis中加入batch应该性能会提高很多吧!
试试改成:
<insert id="insert" statementType="PREPARED">  
        insert into dbbean  
        values('na','nb','nc','nd','ne','nf','ng','nh','ni','nj','nk','nl','nm')  
    </insert>
1 楼 yzj520hyy 2010-04-27  
结论的解释说不过去吧,相差共6秒,解析XML用了6秒啊?

相关推荐

    iBATIS实战

    A.1 比较iBATIS和iBATIS.NET 264 A.1.1 为何Java开发人员应该关心iBATIS.NET 264 A.1.2 为何.NET开发人员应该关心iBATIS.NET 265 A.1.3 主要区别是什么 265 A.1.4 相似之处又在哪里 265 A.2 使用iBATIS.NET 265 A....

    ibatis 总结

    这是关于ibatis 的一些总结, 其中包含ibatis 、hibernate、jdbc三者之间的性能对比,以及ibatis的配置

    springmybatis

    mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in ...

    最新Java面试宝典pdf版

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    Java面试宝典2010版

    11、iBatis与Hibernate有什么不同? 12、写Hibernate的一对多和多对一双向关联的orm配置? 9、hibernate的inverse属性的作用? 13、在DAO中如何体现DAO设计模式? 14、spring+Hibernate中委托方案怎么配置? 15、...

    Java面试笔试资料大全

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    DBKING使用指南

     这些工具的主要目的都是对JDBC进行包装,使开发人员能更容易的进行数据库开发,在代码的可读性、性能问题、移植问题上,这些工具都尽量做了权衡,达到了他们认为的完美。  dbking是鉴于我们的开发经验和考虑...

    JAVA面试宝典2010

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    Java面试宝典-经典

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    java面试题大全(2012版)

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    Java面试宝典2012版

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案...

    java面试宝典2012

    11、iBatis与Hibernate有什么不同? 133 12、写Hibernate的一对多和多对一双向关联的orm配置? 134 9、hibernate的inverse属性的作用? 134 13、在DAO中如何体现DAO设计模式? 134 14、spring+Hibernate中委托方案怎么...

    Java面试宝典2012新版

    11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? 123 14、spring+Hibernate中委托方案怎么...

    Java 面试宝典

    3、说说&和&&的区别。 ............................................................................................... 8 4、在 JAVA 中如何跳出当前的多重嵌套循环? .........................................

Global site tag (gtag.js) - Google Analytics