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

[mybatis-spring] Transaction 事务/事务处理/事务管理器的更多相关文章
- [WCF编程]12.事务:事务协议与管理器
一.事务协议 总体来说,WCF开发人员不需要涉及事务协议与管理器.我们应该依赖WCF来选择相应的事务协议和管理器,重点关注业务逻辑的实现. WCF是根据事务范围里的参与个体来选择事务管理协议的.事务管 ...
- 疑惑的 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L
在MAVEN项目里面,在整合spring和mybatis在执行数据库操作的时候报出了: java.lang.AbstractMethodError: org.mybatis.spring.transa ...
- 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 ...
- org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout() mybatis和spring-mybatis版本不匹配问题
java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout() ...
- java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L
mybatis与springboot集成的时候,报错:java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManag ...
- java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout
java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L ...
- InstantiationException:mybatis.spring.transaction.SpringManagedTransactionFactory
问题表现 Error creating bean with name 'sqlSessionFactory' Invocation of init method failed; nested exce ...
- java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;
java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L ...
- spring mvc + mybatis + spring aop声明式事务管理没有作用
在最近的一个项目中,采用springMVC.mybatis,发现一个很恼人的问题:事务管理不起作用!!网上查阅了大量的资料,尝试了各种解决办法,亦未能解决问题! spring版本:3.0.5 myba ...
随机推荐
- linux判断日志文件大小进行清理
脚本写了一个死循环,根据nohup产生的日志多大, 这里表示日志超过500M之后清理, 具体数字可自定义 睡眠数可自定义 #!/usr/bin/bash while true do s=`du -k ...
- Kali系列之Hydra/Medusa mysql密码爆破
hydra hydra -L /home/chenglee/zidian/user.txt -P /home/chenglee/zidian/wordlist.TXT 192.168.137.133 ...
- LVS+Keepalived+Mysql+主备数据库架构[4台]
这是一个坑...磨了不少时间.见证自己功力有待提升... 架构图 数据库 1.安装数据库 这块不难, 直接引用:mysql安装 2.数据库主备 这块不难, 直接引用: mysql主备 虚拟VIP 重点 ...
- 2018-2019-2 《网络对抗技术》Exp3 免杀原理与实践 20165211
目录 2018-2019-2 <网络对抗技术>Exp3 免杀原理与实践 20165211 1. 基础问题回答 (1)杀软是如何检测出恶意代码的? (2)免杀是做什么? (3)免杀的基本方法 ...
- bzoj 3122 随机数生成器 - BSGS
Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. ...
- 【python001-IDLE】
一.python的下载地址:http://www.python.org 二. python的注释:# 三.>>> print("i love python")i ...
- HDU 5852 Intersection is not allowed!(LGV定理行列式求组合数)题解
题意:有K个棋子在一个大小为N×N的棋盘.一开始,它们都在棋盘的顶端,它们起始的位置是 (1,a1),(1,a2),...,(1,ak) ,它们的目的地是 (n,b1),(n,b2),...,(n,b ...
- 【控制分片分配】控制Elasticsearch分片和副本的分配
ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本.通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题.不能运 ...
- LuoguP5221 Product
题目地址 题目链接 题解 注,下方\((i,j)\)均指\(gcd(i,j)\),以及证明过程有一定的跳步,请确保自己会莫比乌斯反演的基本套路. 介绍本题的\(O(n)\)和\(O(n\sqrt{n} ...
- [HDU] 平方和与立方和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2007 //坑:注意判断输入两个数的前后大小关系 // 用while 循环 #include<io ...