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

事务包下的接口有

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 的方式创建新的对象。

 

转载于:https://my.oschina.net/u/1376195/blog/840759

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值