zoukankan      html  css  js  c++  java
  • [mybatis-spring] Transaction 事务/事务处理/事务管理器

    使用mybatis-spring的主要原因之一就是:

    mybatis-spring允许mybatis参与到spring 事务中.

    mybatis-spring leverage[use (something) to maximum advantage)] 存在的DataSourceTransactionManager ,

    而无需为mybatis特意新建一个新的事务管理.

    一旦Spring tansaction manager被配置,你可以像配置Spring中的transactions as you normally would.

    支持两种配置方式:

      1.@Transactional 注释

      2.AOP style configuration

    transaction存续期间,一个单独的sqlSession 对象会被创建并被使用.

    当事务完成之后,这个session会被提交或者回滚。

    标准配置

    在Spring XML 配置文件中创建 数据源事务管理器DataSourceTransactionManager即会允许Spring进行事务管理.

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource" />
    </bean>

    数据源由任意 JDBC DataSource配置.(见sqlSessionFactoryBean 的文章).

    这包含连接池以及数据源(由JNDI查询获取的).

    注意: 事务管理器使用的DataSource必须和SqlSessionFactoryBean的DataSource保持一致.


    以下部分对我目前用处不大,只是顺便翻译下.


    Container Managed Transactions

    如果你在使用JEE 容器并想要Spring参与到container managed transactions(CMT)中,

    那么Spring应该配置JtaTransactionManager 或者一个它的容器特定的子类.

    最容易的方法是使用Spring事务命名空间:

    <tx:jta-transaction-manager />

    这个配置中,mybatis会表现地和其他由CMT配置的Spring事务源一样.

    SPring会自动使用任何存在的容器事务并且制定一个SqlSession给它.

    如果没有事务启动,但是根据事务配置需要一个,那么Spring就会启动一个新的单CMT.

    注意,如果你使用CMT但不想使用Spring 事务管理,就不能配置Spring事务管理器 ,

    并且必须使用mybatis基础的ManagedTransactionFactory来配置SqlSessionFactoryBean.

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource" />
      <property name="transactionFactory">
        <bean class="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" />
      </property>  
    </bean>

    以↑部分对我目前用处不大,只是顺便翻译下.


    最后还有一块:Programmatic Transaction Management 有空再搞.

    宛如智障,暗藏锋芒
  • 相关阅读:
    The parent project must have a packaging type of POM
    oracle中PLSQL存储过程中如何使用逗号分隔的集合(逗号分隔字符串转换为一个集合)
    此实现不是 Windows 平台 FIPS 验证的加密算法的一部分的解决办法方案
    @Modules( ... ) 多个包路径问题
    phpstorm常用操作---1、phpstorm安装插件
    phpstorm中如何配置phpunit(单元测试)
    前端性能优化---3、静态资源使用cdn加速
    前端性能优化---2、图片响应式加载
    前端性能优化---1、懒加载和复杂资源点击时再请求
    Javascript进阶课程---1、使用工厂模式创建对象
  • 原文地址:https://www.cnblogs.com/zienzir/p/9110817.html
Copyright © 2011-2022 走看看