`
gaoyuntao2005
  • 浏览: 312432 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring ibatis 事务配置

阅读更多

Spring下由三种途径对事物进行管理:编程式事务管理、声明式事务管理和AOP事务管理。其中AOP事务管理又分AOP注解事务管理和AOP XML配置两种,这里记录下述其中的AOP XML配置管理,这也是spring最推荐的方式。

  参照<spring高级程序设计>中的银行转账的例子。

1.Spring的数据源设置

Xml代码  收藏代码
  1. < bean   id = "dataSource"   class = "org.apache.commons.dbcp.BasicDataSource"   destroy-method = "close"   >   
  2.   < property   name = "driverClassName"   value = "com.mysql.jdbc.Driver" />   
  3.   < property   name = "url"   value = "jdbc:mysql://localhost:3306/test" />   
  4.   < property   name = "username"   value = "root" />   
  5.   < property   name = "password"   value = "123456" />   
  6. </ bean >   

 2.Spring对iBATIS的支持

   Spring对ibatis主要提供org.springframework.orm.ibatis.SqlMapClientFactoryBean类来进行支持  

Xml代码  收藏代码
  1. < bean   id = "sqlMapClient"   class = "org.springframework.orm.ibatis.SqlMapClientFactoryBean" >   
  2.   < property   name = "dataSource"   ref = "dataSource" />   
  3.   < property   name = "configLocation"   value = "/config/sqlMapConfig.xml" />   
  4. </ bean >   

  3.Spring对iBATIS DAO的支持

  Spring提供org.springframework.orm.ibatis.support.SqlMapClientDaoSupport来对 iBATIS DAO进行支持,通过调用该类的getSqlMapClientTemplate()方法来获得对iBATIS的控制访问。

Xml代码  收藏代码
  1. < bean   id = "accountDao"   class = "com.hj.dao.AccountDaoImp" >   
  2.    < property   name = "sqlMapClient"   ref = "sqlMapClient" />   
  3. </ bean >      

 

Xml代码  收藏代码
  1. < bean   id = "bankService"   class = "com.hj.bankOps.DefaultBankService" >   
  2.    < property   name = "accountDao"   ref = "bankAccountDao" />   
  3. </ bean >   

   这里DefaultBankService类主要实现BankService接口(提供服务的方法定义),其内部引用一个BankAccountDao实例来对数据库进行访问。BankAccountDao类主要继承SqlMapClientDaoSupport。

 4.Spring 配置事务  

Xml代码  收藏代码
  1. < bean   id = "transactionManager"   class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" >   
  2.      < property   name = "dataSource"   ref = "dataSource" />   
  3.   </ bean >    

  5.AOP XML配置事务管理

    1).配置事务通知

Xml代码  收藏代码
  1. < tx:advice   id = "transactionManagerAdivice"   transaction-manager = "transactionManager" >   
  2.    < tx:attributes >   
  3.       < tx:method   name = "*"    
  4.                 isolation = "READ_COMMITTED"    
  5.                 propagation = "REQUIRED"    
  6.                 rollback-for = "java.lang.RuntionException"   />   
  7.    </ tx:attributes >   
  8. </ tx:advice >   

   2).配置切入点和方面

Xml代码  收藏代码
  1. < aop:config >   
  2.    < aop:pointcut   expression = "execution(* com.hj.bankOps.DefaultBankService.*(..))"   id = "bankServicePc" />   
  3.    < aop:advisor   advice-ref = "transactionManagerAdivice"   pointcut-ref = "bankServicePc" />     
  4.  </ aop:config >   

  上述execution(* com.hj.bankOps.DefaultBankService.*(..))表达式表示切入点为该类中的任何方法。所以当 DefaultBankService类中方法调用时就会进行事务管理,并且当抛出RuntimeException时,自动进行回滚操作。

  6.遇到的问题

   在<Spring高级程序设计>一书上,对AOP XML事务配置时,其通知部分并没有设置具体属性(缺少 rollback-for="java.lang.RuntionException"

Xml代码  收藏代码
  1. < tx:attributes >   
  2.       < tx:method   name = "*"    
  3.                 isolation = "READ_COMMITTED"    
  4.                 propagation = "REQUIRED"    
  5.                />   
  6.    </ tx:attributes >   

 这样在DefaultBankService方法调用中如果有异常抛出,事务并不进行相应回滚操作。

分享到:
评论
1 楼 zhou363667565 2011-12-12  
看到你的这个配置 有个地方有点问题:

< aop:pointcut   expression = "execution(* com.hj.bankOps.DefaultBankService.*(..))"   id = "bankServicePc" />  

如果直接用你上面的配置会报不能匹配类型名称。

Caused by: java.lang.IllegalArgumentException: warning no match for this type name: com.huawei.ngbss.business.service [Xlint:invalidAbsoluteTypeName]

需要加一个”.*“才可以。
因为DefaultBankService包后面.*是类名还要指定方法名需要在加一个”.*“ ,其中
"(..)"是方法参数列表..

正确的应该是:
com.hj.bankOps.DefaultBankService.*.*(..))"  

相关推荐

    spring+ibatis事务的配置

    很好的spring+ibatis事务的配置文档.

    Spring+ibatis 保留ibatis事务的配置

    根据提供的文件信息,本文将详细解析如何在Spring与ibatis框架整合时,通过特定配置来保留ibatis事务处理机制,并实现对事务的自定义控制。文章将围绕标题、描述及部分代码片段展开讨论。 ### Spring与ibatis整合...

    SPRING IBATIS 保留IBATIS事务的配置方式

    根据提供的文件信息,本文将详细解析Spring与iBatis整合时如何保留并使用iBatis事务管理机制,以及如何在应用程序中实现手动控制事务的方法。 ### Spring与iBatis整合 Spring框架是一个全面的企业级应用开发框架,...

    spring ibatis 配置(包括事务管理)

    7. **AOP事务配置**:接下来,我们需要在Spring中配置AOP事务规则,定义哪些方法需要在事务中执行。通常使用`@Transactional`注解,但要在配置文件中开启注解驱动的事务管理。 ```xml ``` 8. **使用示例**:在...

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...

    spring ibatis整合所需jar包

    7. 事务配置:根据业务需求,配置Spring的事务管理器,如PlatformTransactionManager,以控制事务的边界。 8. 整合测试:编写测试类,通过@Autowired注解注入DAO接口,进行数据库操作的测试,确保Spring和iBatis的...

    spring+ibatis声明式事务Demo_

    通过这个Demo,开发者可以学习如何在Spring与iBatis集成的环境中配置和使用声明式事务,理解事务的ACID属性(原子性、一致性、隔离性和持久性)如何在实际项目中得到保障。此外,这也是理解和实践Spring AOP以及依赖...

    spring+ibatis配置实例

    "spring+ibatis配置实例"这个项目提供了一个完整的开发环境,包含所需的依赖包和标准化的项目结构,对初学者或开发者来说极具价值。 Spring是一个全面的Java应用框架,它提供了依赖注入(Dependency Injection,DI...

    spring与ibatis整合集成实例

    3. **配置文件**:在整合过程中,需要配置两部分:Spring 配置文件(如 `applicationContext.xml`)和 iBATIS 配置文件(如 `sqlMapConfig.xml`)。Spring 配置文件中定义数据源、事务管理器以及 ...

    struts2 spring ibatis 项目整合源码

    Spring提供了IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)等核心特性,使得开发者可以轻松地进行事务管理、安全管理以及与其他框架的集成。在本项目中,Spring可能被...

    Spring与iBATIS的集成

    2. **配置Spring**:接下来,需要在Spring的配置文件中定义iBATIS的SqlMapClient或SqlSessionFactory Bean,并配置数据源、事务管理器等相关属性。 3. **定义映射文件**:iBATIS的核心在于定义SQL映射文件,这些...

    Spring+Struts+ibatis下配置数据读写分离及事务(一)

    本文将深入探讨如何在Spring、Struts和iBATIS这三大流行框架的集成环境中实现数据读写分离以及事务控制。我们将不涉及具体的代码实现,而是侧重于理论背景和设计原则。 首先,让我们理解数据读写分离的概念。数据...

    spring+ibatis声明式事务Demo

    当我们谈论"spring+ibatis声明式事务Demo"时,我们关注的是如何在Spring框架中利用iBatis实现声明式事务管理。 声明式事务管理是Spring框架提供的一种方便、高效的方式,使得开发者无需手动控制事务的开始、提交、...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts2 spring ibatis整合的最少最全jar包

    Struts2、Spring和iBatis是Java Web开发中非常重要的三个框架,它们分别负责MVC模式中的Action层、业务逻辑层以及数据访问层。这三个框架的整合可以提供一个高效且灵活的开发环境,帮助开发者构建出结构清晰、易于...

    Struts2 Spring Ibatis mysql 项目整合

    3. 配置iBatis的mybatis-config.xml,包含数据源、事务管理器以及Mapper扫描路径等信息。 4. 设计数据库表结构,编写对应的Java实体类。 5. 编写Service层接口和实现类,用于封装业务逻辑。 6. 编写DAO层接口和实现...

    struts2 spring ibatis 整合架构

    6. **配置数据源**:在Spring中配置数据源,以便iBatis能够连接数据库。 7. **编写Mapper接口和XML文件**:定义数据库操作接口,XML文件中编写具体的SQL语句。 8. **测试**:编写JUnit测试或在实际应用中测试整合后...

    spring_ibatis整合案例

    - **iBatis配置**:编写MyBatis的配置文件(如`mybatis-config.xml`),设置数据源、事务管理器等,并定义Mapper接口和对应的XML映射文件。 4. **Mapper接口与XML映射文件** - **Mapper接口**:在Java中创建...

Global site tag (gtag.js) - Google Analytics