Spring ibatis批处理
[b] 方法一[/b]
[code="java"](1)spring模式:尽管spring已经配置了事务,但以下代码中还是要设置事务,不然batch不会起作用;另外这里虽然设了一下事务处理,但对 全局事务并不会造成影响;
注:不启用事务将建立多次连接,这表示batch没起作用,建立事务后一次连接就搞定了.
public void batchAddExamlog(List examlogList) throws SQLException{
SqlMapClient smc=this.getSqlMapClient();
try {
smc.startTransaction();
smc.startBatch();
for (Iterator iter = examlogList.iterator(); iter.hasNext();) {
Examlog log = (Examlog) iter.next();
smc.update("insertExamlog", log);
}
smc.executeBatch();
} catch (Exception e) {
// TODO: handle exception
}finally{
smc.commitTransaction();
smc.endTransaction();
} [/code]
[b]方法二[/b]
[code="java"]2直接采用回调函数设置
public void batchAddExamlog2(List examlogList){
getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
executor.startBatch();
executor.update //("insertSomething", "myParamValue");
executor.update("insertSomethingElse", "myOtherParamValue");//出错所有回滚
executor.executeBatch();
return null;
}
});
}[/code]
Spring+ibatis批量处理心得3
到一个这东西都写到3了,针对上回说到30000条数据的批量插入工作。30000条数据的批量插入在一个事务里处理固然是快,但是这只是测试环境,30000条数据在数据库的缓存里必然对数数据库的缓存和锁数量都是一个大的挑战,固在新的程序中我们使用了分批事务提交的方式,这样为了保持数据的正确行就只能人为控制数据库中已被插入的数据是否delete掉。另外,使用Batch块提交会引发一个问题就是,如果batch块中发生了异常,我们得不到异常数据的行号即任何信息,所以只能是鱼和熊掌不可兼得(我已关注过insert方法中返回pk的方法了,但好像在batch中他反回不了出错的行号,也许是我没有找到方法,如有人有好方法请共享一下,在这里表示感谢),大家酌情考虑吧,只能到到自己需要的平衡点了。
建议:如果对数据的准确性毋庸置疑的话就是用batch处理。如果不能确定准确性的话,如果对那条数据出错无所谓的话就也可以用batch,但是非要返回出错行号的话就不要用batch了,直接在外面套用一个事务,然后try catch一下,处理一下行号。
分享到:
相关推荐
尽管Spring已经配置了事务管理,但在实际使用iBATIS批处理时,仍需要在代码中显式地开启和提交事务。这是因为iBATIS的批处理需要在一个事务内执行,才能确保所有操作作为一个整体执行。例如,下面的代码展示了如何在...
本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...
基本篇重点讲述了数据批处理的核心概念、典型的作业配置、作业步配置,以及Spring Batch框架中经典的三步走策略:数据读、数据处理和数据写,详尽地介绍了如何对CVS格式文件、JSON格式文件、XML文件、数据库和JMS...
2. **批处理操作**:对于大量数据的操作,Spring JDBC支持提供了批处理的功能,可以极大地提高效率。 3. **参数绑定**:使用Spring JDBC支持时,可以直接绑定Java对象作为SQL语句的参数,无需手动转换类型。 #### ...
iBatis批处理实现方式浅析 iBatis是一个功能强大的持久层框架,提供了多种方式来实现批处理操作。批处理是指将多个SQL语句组合成一个批处理单元,然后将其执行到数据库中,以提高数据库操作的效率。在iBatis中,...
8. **Hibernate 配置**:虽然主要讨论的是 Axis2、iBatis 和 Spring,但文件中还提到了 Hibernate 的配置,如 dialect(数据库方言)、jdbc 的批处理大小和获取数据的大小、是否显示 SQL 语句以及自动更新数据库结构...
除了上面提到的方法,还可以采用Spring的模板模式来处理iBatis的批处理操作。这种方式允许你在一个事务内执行多个操作,并将具体的逻辑封装在一个回调函数中。 示例代码如下: ```java public void create(List...
9. **性能优化**:讨论如何通过缓存、批处理等手段优化iBATIS和Spring的性能。 10. **总结与展望**:总结整合iBATIS和Spring的优势,以及可能遇到的问题,为读者提供进一步学习和实践的建议。 虽然压缩包文件名...
1. 安装和配置:介绍如何将Ibatis集成到项目中,包括Maven或Gradle依赖、Spring整合等。 2. 映射文件和SQL语句:讲解如何编写XML映射文件,包括插入、更新、删除和查询等操作。 3. 动态SQL:Ibatis的动态SQL功能...
8. **与其他框架集成**:iBATIS可以很好地与Spring框架集成,提供更完整的应用程序上下文管理和AOP(面向切面编程)支持。 9. **性能优化**:通过预编译SQL语句、批处理等技术,iBATIS能够有效地提高数据库操作的性能...
- Spring与iBATIS整合:讲解如何将iBATIS与Spring框架集成,实现依赖注入和事务管理。 - 性能优化:提供性能调优的策略,包括缓存使用、批处理等技巧。 这四本教程全面覆盖了iBATIS的核心概念和实践应用,无论你...
Spring的MyBatis-Spring模块提供了对Ibatis的全面支持,包括事务管理。 通过阅读和理解Ibatis的官方文档,开发者可以掌握如何有效地使用Ibatis来构建高效、可维护的数据访问层。这份文档详细解释了每个组件的功能和...
iBATIS DAO是Java开发中的一个关键组件,它在企业级应用中被广泛...同时,由于iBATIS与Spring框架的良好整合,使得在Spring环境下使用iBATIS变得更加便捷,可以实现依赖注入和AOP切面编程,进一步提升开发的灵活性。
Ibatis 可以很好地与 Spring 框架集成,通过 Spring 的事务管理、AOP 代理等特性,进一步简化开发工作。 综上所述,Ibatis 中文手册涵盖了 Ibatis 的基本概念、核心功能以及最佳实践,是学习和掌握这一框架不可或缺...
在使用Ibatis时,开发者可以根据项目的规模和需求选择不同的集成方式,如Spring框架中的Ibatis整合,实现更高级的事务管理和依赖注入。 总的来说,这三者构成了Ibatis的基本运行环境,对于理解Ibatis的工作原理和...
同时,它支持Spring的事务管理,可以无缝集成到Spring应用中。 总的来说,ibatis框架源码的学习不仅可以帮助我们理解其工作原理,提升开发效率,还能为我们提供一种思考问题的角度,理解数据访问层的设计模式。通过...
在Spring框架中嵌入iBatis,可以利用Spring的依赖注入(DI)和面向切面编程(AOP)能力,简化数据访问层的管理。集成iBatis的主要步骤包括配置SqlSessionFactoryBean,定义DataSource,以及将DAO接口与XML映射文件...
最后,书中通过一系列的实际案例展示了iBATIS在各种应用场景下的解决方案,包括Web应用、批处理任务和分布式系统。这些案例不仅帮助读者巩固理论知识,还能提供实践经验。 总的来说,《Manning iBATIS in Action》...
7. **Spring与Ibatis整合**:整合过程通常涉及配置Spring的XML文件,定义SqlSessionFactory,配置数据源,以及配置Mapper接口和XML映射文件。 8. **声明式事务管理**:Spring通过`<tx:annotation-driven>`标签启用...
4. **Spring ORM**:ORM(Object-Relational Mapping)模块集成了一些流行的数据持久化框架,如Hibernate、JPA(Java Persistence API)和iBatis。这使得开发者可以在Spring框架中无缝地使用这些ORM工具,进行数据库...