文档章节

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

lackiechan
 lackiechan
发布于 2017/02/17 13:47
字数 459
阅读 8
收藏 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.type)类型处理器

此模块主要是实现MyBaties数据类型和jdbc中的数据类型的转换 一、TypeHandler接口作为参数转换的基础接口: 1、设定参数函数: void setParameter(PreparedStatement ps, int i, T parameter...

lackiechan
2016/12/12
10
0
mybaties源码解析(org.apache.ibatis.session Configuration 模块

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

lackiechan
2016/12/13
19
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6 取整除法

python3.6 中取整除法运算逻辑如下: d 非零,那么商 q 满足这样的关系: a = qd + r ,且0 ≤ r n1=7//3#7 = 3*2 +1n2=-6.1//3#-7 = 3*(-3)+2'{},{}'.format(n1,n2) 从运行结果可以...

colinux
21分钟前
3
0
阶段总结——用虚拟机搭建一个高可用负载均衡集群架构

[toc] linux基本知识已经介绍完,现有一个业务需要操作,通过对这个项目的操作,可以复习、总结、巩固之前的知识点; ** 用13台虚拟机搭建一个高可用负载均衡集群架构出来,并运行三个站点,...

feng-01
25分钟前
0
0
mysql 设置utf8字符集 (CentOS)

1.查看数据库及mysql应用目前使用的编码方式 (1)链接mysql 客户端 (2)执行:status 结果: 2.修改mysql 应用的字符编码(server characterset ) (1)打开配置文件:vim /etc/mysql/my...

qimh
25分钟前
0
0
windows无法格式化u盘解决方法

1。点开始-运行-输入cmd-format f: /fs: fat32 (这里f:是指U盘所在盘符) 这个格式化会很慢 请耐心等待

大灰狼wow
36分钟前
0
0
MySql 8.0连接失败

原来,MySql 8.0.11 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_s...

放飞E梦想O
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部