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

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秒啊?

相关推荐

    mysql,jdbc详解,与ibatis对比。批量查询,分页处理。

    ### MySQL、JDBC详解及与iBatis对比 #### 一、MySQL基本操作 MySQL作为一款广泛使用的开源关系型数据库管理系统,在IT行业中占有极其重要的地位。对于开发人员来说,掌握MySQL的基本操作至关重要。 ##### 1. 增删...

    ibatis教程,ibatis帮助文档

    二、iBATIS与传统JDBC的比较 iBATIS与JDBC相比,减少了约61%的代码量,简化了持久化层的构建。它不仅是最简单的持久化框架,还带来了架构级的性能提升。SQL语句与程序代码分离,提高了代码的可重用性和团队分工的...

    Ibatis和Hibernate的分析比较

    3. 学习曲线:Hibernate的全面性使得学习成本较高,而Ibatis的“半自动化”特性使得学习相对简单,但可能需要开发者有较强的SQL功底。 4. 缓存和事务管理:两者都支持缓存和事务,但Hibernate内置了更强大的管理机制...

    ibatis in action 电子书(pdf)

    iBATIS,一个由Apache软件基金会维护的开源项目,是Java平台上的一个SQL映射框架,它允许程序员将数据库操作与应用程序代码紧密集成,而无需依赖传统的JDBC模板或实体管理器。 本书的核心内容围绕以下几个关键知识...

    iBATIS SQL Maps

    #### 三、iBATIS与Hibernate对比 - **灵活性**:与Hibernate相比,iBATIS允许开发人员直接编写SQL语句,这在处理复杂查询时非常有用。Hibernate虽然强大,但在面对复杂的查询需求时可能需要更多的时间和精力来调整...

    详细介绍Ibatis的用法

    #### Ibatis概述与特点 Ibatis是一个开源的持久层框架,它通过简单的XML配置文件将JavaBean映射到SQL语句上,从而极大简化了对关系数据库的操作。与其他数据库持久层框架如JDO、Hibernate相比,Ibatis的最大优势...

    ibatis jar 包

    **Ibatis与Hibernate的对比:** Ibatis和Hibernate都是ORM(对象关系映射)框架,但它们在设计理念上有所不同。Hibernate更倾向于全自动的ORM,提供了强大的对象关系映射功能,而Ibatis则更注重SQL的自由度,让...

    ibatis技术总结

    iBatis与传统JDBC比较 iBatis作为一种流行的轻量级数据访问框架,相比传统的JDBC提供了诸多优势: 1. **减少代码量**:使用iBatis可以显著减少与数据库交互所需的代码量,相比于纯JDBC程序,代码量减少了大约61%...

    ibatis.util包

    9. **Exceptions**: `ibatis.util.Exceptions`类提供了一系列与Ibatis相关的异常,如`IOException`和`SQLException`的包装,便于统一处理错误。 在EMIS系统中,`ibatis.util`包的缺失可能会导致以下问题: - SQL...

    Ibatis+Oracle(含对应数据库sql) 源码

    【标题】"Ibatis+Oracle(含对应数据库sql) 源码" 是一个学习和实践Ibatis与Oracle数据库结合使用的资源包。这个资源对于初学者来说尤其有帮助,因为它包含了一个实际项目的源代码和相应的SQL脚本,使得学习者能够...

    ibatis学习笔记

    本篇学习笔记将深入探讨Ibatis的优点、与JDBC的对比以及如何准备Ibatis的开发环境。 **一、Ibatis 优点** 1. **SQL语句独立**:Ibatis允许开发者在XML配置文件中编写SQL语句,这使得源代码更加整洁,便于团队协作...

    ibatis 开发指南,开发手册 txt 版

    - **iBatis与其他ORM框架比较**: - 与Hibernate和Apache OJB相比,iBatis更侧重于提供半自动化的ORM解决方案。 - Hibernate和OJB提供了全自动化对象关系映射,而iBatis则允许开发者手动编写SQL语句,并将结果集...

    ibatis教程.ppt

    与JDBC相比,iBATIS提供了架构级别的性能提升,将SQL代码从程序中解耦,增强了代码的可重用性和项目的分工。同时,由于SQL语句的独立,iBATIS在数据库移植方面也具有优势。 3. **与Hibernate框架的比较** ...

    ibatis教程 入门教程

    与 Hibernate 框架的对比中,Hibernate 主要负责对象关系映射,而 iBATIS 则需要手动编写 SQL。虽然 Hibernate 自动化程度更高,但在某些情况下,如频繁的数据库字段修改,iBATIS 的维护成本更低。同时,iBATIS 的 ...

    ibatis学习笔记.txt

    **2.4 性能对比** - **iBatis** 在执行复杂 SQL 方面更胜一筹,尤其是在数据量大时性能优势更为明显。 - **Hibernate** 在简单查询或对象关系映射上表现较好,但对于复杂的 SQL 查询则显得力不从心。 #### 三、...

    ibatis简介 主要介绍了ibatis的作用和使用环境

    4. **与现有系统集成**:对于已经存在大量JDBC代码或者需要与现有系统集成的应用程序,ibatis可以作为桥接工具,帮助开发者更容易地迁移至框架驱动的开发模式。 ### 总结 ibatis是一个强大的轻量级数据库访问框架...

    Ibatis入门资料(PPT)

    在与传统的JDBC比较时,Ibatis 显示出了多方面的优势。首先,它减少了大约61%的代码量,使得开发更为高效。其次,Ibatis 架构级的性能增强,通过将SQL代码与程序代码分离,提高了代码的可读性和可维护性。此外,由于...

    Spring iBatis Learning Notes

    3. **适用场景**:iBatis更适合那些对性能有较高要求且SQL语句较为复杂的项目。 #### 九、参考文献 - [iBatis官方文档](https://ibatis.apache.org/) - [Spring官方文档](https://spring.io/docs) - [Java ...

Global site tag (gtag.js) - Google Analytics