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的文件解析等方面。
分享到:
相关推荐
### MySQL、JDBC详解及与iBatis对比 #### 一、MySQL基本操作 MySQL作为一款广泛使用的开源关系型数据库管理系统,在IT行业中占有极其重要的地位。对于开发人员来说,掌握MySQL的基本操作至关重要。 ##### 1. 增删...
二、iBATIS与传统JDBC的比较 iBATIS与JDBC相比,减少了约61%的代码量,简化了持久化层的构建。它不仅是最简单的持久化框架,还带来了架构级的性能提升。SQL语句与程序代码分离,提高了代码的可重用性和团队分工的...
3. 学习曲线:Hibernate的全面性使得学习成本较高,而Ibatis的“半自动化”特性使得学习相对简单,但可能需要开发者有较强的SQL功底。 4. 缓存和事务管理:两者都支持缓存和事务,但Hibernate内置了更强大的管理机制...
iBATIS,一个由Apache软件基金会维护的开源项目,是Java平台上的一个SQL映射框架,它允许程序员将数据库操作与应用程序代码紧密集成,而无需依赖传统的JDBC模板或实体管理器。 本书的核心内容围绕以下几个关键知识...
#### 三、iBATIS与Hibernate对比 - **灵活性**:与Hibernate相比,iBATIS允许开发人员直接编写SQL语句,这在处理复杂查询时非常有用。Hibernate虽然强大,但在面对复杂的查询需求时可能需要更多的时间和精力来调整...
#### Ibatis概述与特点 Ibatis是一个开源的持久层框架,它通过简单的XML配置文件将JavaBean映射到SQL语句上,从而极大简化了对关系数据库的操作。与其他数据库持久层框架如JDO、Hibernate相比,Ibatis的最大优势...
**Ibatis与Hibernate的对比:** Ibatis和Hibernate都是ORM(对象关系映射)框架,但它们在设计理念上有所不同。Hibernate更倾向于全自动的ORM,提供了强大的对象关系映射功能,而Ibatis则更注重SQL的自由度,让...
iBatis与传统JDBC比较 iBatis作为一种流行的轻量级数据访问框架,相比传统的JDBC提供了诸多优势: 1. **减少代码量**:使用iBatis可以显著减少与数据库交互所需的代码量,相比于纯JDBC程序,代码量减少了大约61%...
9. **Exceptions**: `ibatis.util.Exceptions`类提供了一系列与Ibatis相关的异常,如`IOException`和`SQLException`的包装,便于统一处理错误。 在EMIS系统中,`ibatis.util`包的缺失可能会导致以下问题: - SQL...
【标题】"Ibatis+Oracle(含对应数据库sql) 源码" 是一个学习和实践Ibatis与Oracle数据库结合使用的资源包。这个资源对于初学者来说尤其有帮助,因为它包含了一个实际项目的源代码和相应的SQL脚本,使得学习者能够...
本篇学习笔记将深入探讨Ibatis的优点、与JDBC的对比以及如何准备Ibatis的开发环境。 **一、Ibatis 优点** 1. **SQL语句独立**:Ibatis允许开发者在XML配置文件中编写SQL语句,这使得源代码更加整洁,便于团队协作...
- **iBatis与其他ORM框架比较**: - 与Hibernate和Apache OJB相比,iBatis更侧重于提供半自动化的ORM解决方案。 - Hibernate和OJB提供了全自动化对象关系映射,而iBatis则允许开发者手动编写SQL语句,并将结果集...
与JDBC相比,iBATIS提供了架构级别的性能提升,将SQL代码从程序中解耦,增强了代码的可重用性和项目的分工。同时,由于SQL语句的独立,iBATIS在数据库移植方面也具有优势。 3. **与Hibernate框架的比较** ...
与 Hibernate 框架的对比中,Hibernate 主要负责对象关系映射,而 iBATIS 则需要手动编写 SQL。虽然 Hibernate 自动化程度更高,但在某些情况下,如频繁的数据库字段修改,iBATIS 的维护成本更低。同时,iBATIS 的 ...
**2.4 性能对比** - **iBatis** 在执行复杂 SQL 方面更胜一筹,尤其是在数据量大时性能优势更为明显。 - **Hibernate** 在简单查询或对象关系映射上表现较好,但对于复杂的 SQL 查询则显得力不从心。 #### 三、...
4. **与现有系统集成**:对于已经存在大量JDBC代码或者需要与现有系统集成的应用程序,ibatis可以作为桥接工具,帮助开发者更容易地迁移至框架驱动的开发模式。 ### 总结 ibatis是一个强大的轻量级数据库访问框架...
在与传统的JDBC比较时,Ibatis 显示出了多方面的优势。首先,它减少了大约61%的代码量,使得开发更为高效。其次,Ibatis 架构级的性能增强,通过将SQL代码与程序代码分离,提高了代码的可读性和可维护性。此外,由于...
3. **适用场景**:iBatis更适合那些对性能有较高要求且SQL语句较为复杂的项目。 #### 九、参考文献 - [iBatis官方文档](https://ibatis.apache.org/) - [Spring官方文档](https://spring.io/docs) - [Java ...