1、什么是事务。

多个数据库原子访问应该被绑定成一个整体,这就是事务。事务是一个最小的逻辑执行单元,整个事务不能分开执行,要么同时执行,要么同时放弃执行。

事务的4个特性:原子性、一致性、隔离性、持续性。

2、Mybatis提供了Transaction接口。

Transaction接口有两个实现类:事务

<1>JdbcTransaction:

<2>ManagedTransaction:

还提供了TransactionFactory接口:获取事务的实例对象

<1>JdbcTransactionFactory:

<2>ManagedTransactionFactory:

事务一般应该包含的动作:create、commit、rollback、close

3、事务的配置创建和使用

1》事务的配置

<environments default="oracle">
<environment id="oracle">
<!-- 指定事务管理类型,type="JDBC"指直接使用JDBC的提交与回滚 -->
<transactionManager type="JDBC" />
...
</environment>
</environments>

2》事务工厂的创建

如果type=“MANAGED”,则Mybatis会创建一个ManagedTransactionFactory的实例。

3》事务工厂TransactionFactory

通过事务工厂TransactionFactory很容易的获取到Transaction对象实例。JdbcTransactionFactory将创建JdbcTransaction。

4》JdbcTransaction

JdbcTransaction可直接使用JDBC的提交和回滚事务管理机制。它依赖于从dataSource中取到的连接connection来管理tranction的作用域,connection对象的获取被延迟到调用getConnection()方法时。如果autocommit设为为on,开启状态的话,则会忽略commit和rollback。

也就是说,JdbcTransaction是使用java.sql.Connection上的commit和rollback功能来完成事务的操作,JdbcTransaction只是相当于对java.sql.Connection事务处理进行了再次封装,Transaction的事务管理都是通过java.sql.Connection实现的。

5》Managedtransaction

让容器管理事务Transaction的整个生命周期,即使用ManagedTransaction的commit和rollback功能不会对事务有任何的影响,它什么都不做,它将事务的管理权移交给了容器来实现。

最新文章

  1. C# 知识特性 Attribute
  2. 及时取消代码中的AsyncTask
  3. awk 双引号vs单引号
  4. 转:C# WinForm获取 当前执行程序路径的几种方法
  5. jquery格式化时间
  6. oracle 拼接一张表所有字段
  7. 未知高度定宽div水平居中及垂直居中(兼容ie6及其他牛逼浏览器)
  8. 【Android】Android之Action Bar
  9. 配置Tomcat数据源
  10. Delphi Base64 编解码函数
  11. Keil MDK下如何设置非零初始化变量
  12. java网络编程(4)——udp实现聊天
  13. [ZOJ3435]Ideal Puzzle Bobble
  14. @ReponseBody返回的json中文乱码-遁地龙卷风
  15. .NET EF框架的安装、及三种开发模式
  16. [C++]最小生成元 (Digit Generator, ACM/ICPC Seoul 2005, UVa1583)
  17. 2018 github热门项目
  18. POJ2031 Building a Space Station【最小生成树】
  19. matlab问题集总
  20. PHP获取http头信息

热门文章

  1. C++ fstream 用法
  2. c++常见函数记录
  3. Python 元组Ⅱ
  4. 对0.5px的边的研究--------------引用
  5. 字典,set
  6. git windows下换行符问题
  7. zookeeper3.5.5集群部署
  8. mybatis批量插入并返回主键(序列)-oracle
  9. 装RAC跑脚本报错
  10. wannalfy 挑战赛7 E 珂朵莉与GCD (离线+线段树/树状数组)