前段时间做一个老项目的开发,系统架构为struts+spirng+ibatis。
由于业务需要,在系统中增加了H2数据库,需要对H2的操作进行事务控制。原来系统中的数据库是oracle数据库,这样加系统原来的数据库,就有了两个数据源。原项目中是通过spring的ransactionProxyFactoryBean进行事务控制的,ransactionProxyFactoryBean只能配置一个数据源。
通过修改配置文件,可以使用JTA进行事务控制,这样可以实现跨数据源的事务控制。但是很不幸,不能修改原来的配置文件。所以只能通过编程手动实现H2的事务控制。
因系统中通过ibatis的DAO进行数据库的管理。所以打算通过iBATIS DAO框架的SQLMap实现事务控制。
代码如下:
//手动控制事务
SqlMapClient sqlMapClient = (SqlMapClient) ((CorrelateAlarmDAOImpl) correlateAlarmDAO).getSqlMapClientTemplate().getSqlMapClient();
try {
sqlMapClient.startTransaction();
//todo something
sqlMapClient.commitTransaction();
} catch(Exception e){
Log.error("CorrelateAlarmBO-->do**方法出现异常!" + e.getMessage());
throw new RuntimeException (e);
}finally{
try {
sqlMapClient.endTransaction();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.error("CorrelateAlarmBO-->do***方法出现异常!" + e.getMessage());
throw new RuntimeException(e);
}
}
分享到:
相关推荐
在IT行业中,数据库操作是应用程序的核心部分,而事务控制则是保证数据一致性与完整性的关键机制。本案例聚焦于`ibatis`(MyBatis...通过案例学习和实践,你可以进一步了解如何在实际项目中运用Ibatis进行事务控制。
根据提供的文件信息,本文将详细解析如何在Spring与ibatis框架整合时,通过特定配置来保留ibatis事务处理机制,并实现对事务的自定义控制。文章将围绕标题、描述及部分代码片段展开讨论。 ### Spring与ibatis整合...
根据提供的文件信息,本文将详细解析Spring与iBatis整合时如何保留并使用iBatis事务管理机制,以及如何在应用程序中实现手动控制事务的方法。 ### Spring与iBatis整合 Spring框架是一个全面的企业级应用开发框架,...
综上所述,通过监听文件系统变化并自定义SqlSessionFactory,我们可以实现在不重启应用的情况下手动控制加载iBatis的SQL映射文件。这极大地提高了开发效率,同时也对开发流程提出了更高的要求,比如需要更严格的文件...
声明式事务管理是Spring框架提供的一种方便、高效的方式,使得开发者无需手动控制事务的开始、提交、回滚等过程,而是通过配置或注解来声明事务边界。这种方式极大地提高了代码的可读性和可维护性。 首先,要理解...
- 事务配置问题(如`spring&ibatis事务配置问题.htm`):整合过程中常见的问题可能涉及到事务的隔离级别、事务超时、回滚规则等,需要正确配置Spring的事务管理器以确保事务正确运行。 3. 文件编码转换: - 在...
1. 映射关系:Hibernate提供了一种对象关系映射(ORM)机制,自动处理对象与数据库之间的转换,而iBATIS需要开发者手动编写SQL语句。 2. 开发效率:在相同需求下,iBATIS的工作量可能大于Hibernate,因为需要手写SQL...
Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,提供了更加灵活的数据访问接口。 在"ibatis demo"中,我们通常会看到以下核心概念和知识点: 1. **配置文件**:Ibatis的配置文件(mybatis-...
基于JDBC的事务管理适用于单个数据库的事务控制,而基于JTA的事务管理则适用于分布式事务环境,能够在多个资源管理器之间协调事务。 #### 缓存机制 为了提高查询性能,ibatis内置了多种缓存机制,包括`MEMORY`类型...
5. 事务管理:介绍如何使用Ibatis进行事务控制,包括手动和自动事务。 6. 缓存:Ibatis提供了本地缓存和二级缓存机制,有助于提高性能。 7. 执行性能:提供优化建议,如批处理、缓存使用等,以提升应用程序的运行...
编程式事务管理通过 `SqlSession` 的 begin、commit 和 rollback 方法手动控制;声明式事务管理通常结合 Spring 框架实现,由 Spring 管理事务的开始、提交和回滚。 七、工具类与插件 1. Mybatis-Plus:在 Ibatis ...
4. 事务管理:iBATIS支持事务控制,可以在操作数据库时确保数据的一致性。 总的来说,iBATIS提供了一种灵活的方式来处理数据库操作,既保留了SQL的灵活性,又简化了Java代码,特别适合那些需要对SQL有高度控制的...
同时,它的事务控制灵活,既支持手动控制,也支持Spring等框架的集成,实现声明式事务管理。 总之,这个压缩包提供的资源对于学习和掌握iBatis 2.0,理解其工作原理和最佳实践,以及向更现代的MyBatis过渡,都是...
6. **事务管理**:讲解了如何使用IBATIS的事务管理功能,包括手动和自动提交、回滚以及事务隔离级别设置。 7. **插件**:IBATIS允许开发者创建自定义插件,可以拦截SQL执行过程,实现日志、性能监控等功能。 8. **...
4. **事务管理**: iBATIS提供了事务控制功能,可以在代码中手动开启、提交或回滚事务,也可以通过配置自动管理事务。 5. **结果映射**: iBATIS可以自动将数据库查询的结果映射到Java对象,简化了数据访问的复杂性。...
Spring是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、事务管理等特性,而iBatis则是一个优秀的持久层框架,它将SQL语句与Java代码分离,使得数据库操作更加灵活和易于维护。将两者整合可以实现松...
Ibatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作,极大地提高了开发效率。在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入...
3. **事务管理**:iBATIS支持事务的自动提交和回滚,可以根据不同的数据库配置进行事务控制。 4. **结果映射**:iBATIS能将查询结果自动映射到Java对象,减少了手动转换的工作量。 5. **动态SQL**:通过iBATIS的...
8. **事务管理**:讨论iBatis如何进行事务控制,包括手动和自动提交,以及事务隔离级别。 9. **插件机制**:介绍iBatis的插件功能,如何自定义插件拦截SQL执行过程,实现如日志记录、性能分析等功能。 10. **缓存...