文档章节

mybaties源码解析 (org.apache.ibatis.transaction) 事务

lackiechan
 lackiechan
发布于 2017/02/17 13:47
字数 459
阅读 10
收藏 0

事务包下的接口有

1、Transaction接口  主要是数据库连接获取,事务提交,事务回滚,数据库连接关闭

2、TransactionFactory事务工厂接口  主要有属性设置、根据连接新建事务、根据数据源和数据级别与是否需要自动提交参数新建事务

 

org.apache.ibatis.transaction.managed 

1、ManagedTransaction 实现事务的接口

可以根据数据库连接 或者数据源,事务级别来初始化。

成员变量有

 private DataSource dataSource;
  private TransactionIsolationLevel level;
  private Connection connection;
  private boolean closeConnection;

重点是commit和rollback是空实现,意味着交给容器进行管理。

根据初始化方式的不同,获取数据库连接就不同。没有在构造函数传入connection时,通过数据源的dataSource.getConnection()获取连接。

 

2、ManagedTransactionFactory 

在默认情况下closeConnection是关闭的,然而一些容器并不希望这样, 因此如果你需要从连接中停止 它,将 closeConnection 属性设置为 false。

 

org.apache.ibatis.transaction.jdbc 主要是jdbc事务和事务工厂的 封装

JdbcTransaction 

commit接口的实现逻辑是 连接非空而且连接不是自动提交的时候调用连接的commit函数

rollback 的实现逻辑和commit一样

close的实现是 但连接非空的时候,要调用重置自动提交的函数,将连接设置为自动提交。然后执行连接的关闭函数connection.close();

openConnection 在打开一个连接的时候先从获取到连接,然后检查连接的自动提交。如果连接的自动提交状态跟将要设定的不同时,调用  connection.setAutoCommit(desiredAutoCommit);进行设置。框架中做了异常处理,因为有些数据库驱动不支持getAutoCommit() 或者 setAutoCommit()。

 

 

JdbcTransactionFactory 实现TransactionFactory接口。通过new 的方式创建新的对象。

 

© 著作权归作者所有

共有 人打赏支持
lackiechan
粉丝 1
博文 8
码字总数 2456
作品 0
广州
私信 提问
mybatis源码解读(四)——事务的配置

  上一篇博客我们介绍了mybatis中关于数据源的配置原理,本篇博客介绍mybatis的事务管理。   对于事务,我们是在mybatis-configuration.xml 文件中配置的:      关于解析 标签在上一...

ysocean
05/12
0
0
mybaties源码解析(org.apache.ibatis.session)session模块

一、SqlSession :常用接口SqlSession。实现java.io.Closeable。 主要集成了 1、查询类函数 selectXXX 2、插入类函数insertXXX 3、删除类函数delete 4、事务提交commit 5、回滚rollback 6、批...

lackiechan
2016/12/12
11
0
java高级工程师面试问题集结号(four)

1:mybaties如何实现数据库表名和实体名不一致的情况 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这...

布道牛
2016/09/09
38
0
mybaties源码解析(org.apache.ibatis.session Configuration 模块

Configuration 是用户对mybaties配置维护的类,通过io模块从xml配置文件读取配置文件。 集成的api有创建执行器,结果处理器、语句处理器、参数处理器和基础属性配置,还有多个静态成员变量维护...

lackiechan
2016/12/13
19
0
mybaties源码解析 (org.apache.ibatis.executor) 执行器

执行器模块 interface Executor 1、数据更新 2、查询 3、批处理刷新 4、提交 5、回滚 6、创建缓存 7、是否缓存 8、缓存清除 9、事务获取 10、关闭、是否关闭 11、设置执行器包装对象...

lackiechan
2016/12/13
3
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
5
0
让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
今天
4
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
今天
17
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部