使用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 有空再搞.

[mybatis-spring] Transaction 事务/事务处理/事务管理器的更多相关文章

  1. [WCF编程]12.事务:事务协议与管理器

    一.事务协议 总体来说,WCF开发人员不需要涉及事务协议与管理器.我们应该依赖WCF来选择相应的事务协议和管理器,重点关注业务逻辑的实现. WCF是根据事务范围里的参与个体来选择事务管理协议的.事务管 ...

  2. 疑惑的 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L

    在MAVEN项目里面,在整合spring和mybatis在执行数据库操作的时候报出了: java.lang.AbstractMethodError: org.mybatis.spring.transa ...

  3. java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer; at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.jav

    在整合spring和mybatis在执行数据库操作的时候报出了: java.lang.AbstractMethodError: org.mybatis.spring.transaction.Sprin ...

  4. org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout() mybatis和spring-mybatis版本不匹配问题

    java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()  ...

  5. java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L

    mybatis与springboot集成的时候,报错:java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManag ...

  6. java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout

    java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L ...

  7. InstantiationException:mybatis.spring.transaction.SpringManagedTransactionFactory

    问题表现 Error creating bean with name 'sqlSessionFactory' Invocation of init method failed; nested exce ...

  8. java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;

    java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L ...

  9. spring mvc + mybatis + spring aop声明式事务管理没有作用

    在最近的一个项目中,采用springMVC.mybatis,发现一个很恼人的问题:事务管理不起作用!!网上查阅了大量的资料,尝试了各种解决办法,亦未能解决问题! spring版本:3.0.5 myba ...

随机推荐

  1. kali meterpreter中mimikatz模块获取密码

    kali这方面不说了, meterpreter也略过, 做个关于mimikatz的笔记. mimikatz模块, 能获取对方机器的密码(包括哈希和明文). 渗透模块怎么进的也不说了, 方式太多, 我用 ...

  2. 守护进程,互斥锁,IPC,队列,生产者与消费者模型

    小知识点:在子进程中不能使用input输入! 一.守护进程 守护进程表示一个进程b 守护另一个进程a 当被守护的进程结束后,那么守护进程b也跟着结束了 应用场景:之所以开子进程,是为了帮助主进程完成某 ...

  3. Restful framework【第三篇】序列化组件

    基本使用 -序列化 -对象,转成json格式 用drf的序列化组件 -定义一个类继承class BookSerializer(serializers.Serializer): -写字段,如果不指定so ...

  4. for和while循环的区别

    区别:for循环,就是遍历某一对象,通俗说就是根据循环次数限制做多少次重复操作.while循环,是当满足什么条件的时候,才做某种操作. for为遍历循环 while为直到循环

  5. vim改善生活的几个插件

    vim改善生活的几个插件 http://www.cnblogs.com/lovesaber/archive/2012/01/06/2315343.html

  6. 如何清除浮动塌陷? float:left 塌陷

    参考文章: http://www.jb51.net/css/502268.html 原文链接:http://www.jianshu.com/p/a0500b54da13 只要给li的宽度, 规定得小一 ...

  7. Docker 使用Dockerfile构建tomcat镜像

    Dockerfile概念: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题. ...

  8. CF983B XOR-pyramid

    设\(xorx[l][r]\)表示题目中\(f(l,r)\)的值,则可以得出 \[ xorx[i][j]=xorx[i][j-1] \oplus xorx[i+1][j] \] 设\(maxx[l][ ...

  9. log4j2日志xml配置——不同级别的日志分别记录在不同的文件

    <?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL ...

  10. 【搬运工】——Java中的static关键字解析(转)

    原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大 ...