使用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. ldap集成grafana

    grafana版本: 5.0.3 grafana通过k8s方式安装,所以需将配置文件挂载过去. cat grafana-configmap.yaml apiVersion: v1 kind: Conf ...

  2. 浅尝flutter中的http请求

    import 'package:flutter/material.dart'; class News extends StatefulWidget { final String title,imgli ...

  3. debian下如何源码安装tmux

    一.源码安装ncurses库 1.1 获取源码 wget https://invisible-island.net/datafiles/release/ncurses.tar.gz tar xvf n ...

  4. bzoj1741 [Usaco2005 nov]Asteroids 穿越小行星群 最小点覆盖

    链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1741 思路 消除所有的小行星 每个点(x,y)只有选择x或者y才能被覆盖 二分图最小点覆盖= ...

  5. P4097 [HEOI2013]Segment(李超树)

    链接 https://www.luogu.org/problemnew/show/P4097 https://www.lydsy.com/JudgeOnline/problem.php?id=3165 ...

  6. Windows环境下32位汇编语言程序设计笔记-基础篇

    内存模式 .386 .model flat,stdcall ;子程序调用模式,win32中只能用stdcall,因为win32api调用使用的这个 option casemap:none ;定义了程序 ...

  7. 卸载linux系统上自带的mysql

    步骤: 1.打开centos命令提示符,切换为root用户 2.输入rpm -qa|grep -i mysql命令以检查系统含有的mysql插件,回车,若没有则说明无自带mysql,系统很干净.若有显 ...

  8. JQuery的ajax方法获取返回值得到了值还包含了不要的html源码 (Ajax相关知识)

    因为后台使用了response.Write():这个方法,当输出完了以后,没有结束掉会继续输出,所以需要用到response.End():这样问题就解决了 jquery的ajax 除了通过url传值, ...

  9. Jdk在window环境下的安装与配置详解

    本文为博主原创,转载请注明出处: 1.2  Java程序开发环境的配置 java开发工具包:java开发工具:记事本 IDE,这个只能写小程序,写大程序需要集成开发工具:反编译工具(我们可以在网上找一 ...

  10. PTA 根据后序和中序遍历输出先序遍历(25 分)

    7-1 根据后序和中序遍历输出先序遍历(25 分) 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果. 输入格式: 第一行给出正整数N(≤30),是树中结点的个数.随后两行 ...