1、什么是事务

事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。事务可大可小,在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

2、MyBatis事务管理策略

MyBatis的事务管理分为两种形式:

(1)使用JDBC的事务管理机制。

这种机制就是利用java.sql.Connection对象完成对事务的提交

(2)使用MANAGED的事务管理机制。

这种机制mybatis自身不会去实现事务管理,而是让程序的Web容器或者Spring容器来实现对事务的管理。

3、MyBatis中Transaction接口

mybatis支持的两种事务类型管理器,Transactions接口中对两种事务管理方式进行行为约束。具体介绍看下面代码。public interface Transaction

{

//JDBC中事务手动管理,需要依靠Connection对象,此方法可以取得Connection对象。

Connection getConnection() throws SQLException;

//设置在什么情况下执行commit()命令

void commit() throws SQLException;

//设置在什么情况下执行rollback()命令

void rollback() throws SQLException;

//业务完毕后,处理Connection对象,一般有两种形式,将这个Connection对象销毁或者将Connection返回数据库连接池中。

void close() throws SQLException;

//Connection向数据库索要一个Transaction对象时的最大等待时间。

Integer getTimeout() throws SQLException;

}

4、Transaction的接口实现类

Transaction接口中有两个实现类:JdbcTransaction和ManagedTransaction。

(1)JdbcTransaction

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

(2)ManagedTransaction

查看这个类,可知其中的commit方法和rollback方法没有具体实现。ManagedTransaction是让容器来管理事务Transaction的整个生命周期,使用ManagedTransaction的commit和rollback功能不会对事务有任何影响,它没有具体实现,它将事务管理权交给容器来实现。

mysql两种事务管理器_MyBatis事务管理的两种方式相关推荐

  1. mybatis plus 事务管理器_Mybatis中的事务

    Mybatis中的事务 数据库中的事务可以保证在连续执行的多条写操作(增删改)时,这多条操作要么成功,要么全部失败,以保证数据和逻辑的完整及严谨 在使用mybatis时,无需考虑事务如何创建,如何提交 ...

  2. Anbox 实现分析 3:会话管理器与容器管理器的通信

    Anbox 通过一个可执行文件,实现多个不同的应该用逻辑.在启动 Anbox 可执行文件时,通过为它提供不同的命令行参数来确定具体执行哪个命令.Anbox 中这些不同的命令实例之间,整体的通信架构如下 ...

  3. 前端包管理器的依赖管理原理

    本文主要探究前端包管理器的依赖管理原理,希望对读者有所帮助. 前言 npm是Node.JS的包管理工具,除此之外,社区有一些类似的包管理工具如yarn.pnpm和cnpm,以及集团内部使用的tnpm. ...

  4. java常用布局管理器(流布局管理器、边界布局管理器、网格布局管理器)

    在Swing中,每个组件在容器中都有一个具体的位置大小.而在容器中摆放各种组件时很难判断其具体位置和大小,使用布局管理器比程序员直接在容器中控制Swing组件的位置和大小方便得多,可以更加有效地处理整 ...

  5. 最好用的插件管理器:扩展管理器(支持:Chrome、Edge、Firefox)

    如果大家有插件太多不好管理的烦恼,强烈推荐大家体验一下这款插件管理器:扩展管理器. 扩展管理器 来大家一起看下扩展管理器的插件列表图:是不是一下就被这个款漂亮UI给吸引了. v2.1.0版本:插件列表 ...

  6. 【Android笔记50】Android应用如何获取系统服务(软键盘管理器、闹钟管理器)

    这篇文章,主要介绍Android应用如何获取系统服务(软键盘管理器.闹钟管理器). 目录 一.获取系统服务 1.1.软键盘显示和隐藏 (1)showSoftInput显示软键盘

  7. linux虚拟化 pdf,IBM LinuxONE 虚拟机管理器和虚拟化管理.PDF

    IBM LinuxONE 虚拟机管理器和虚拟化管理 IBM LinuxONE™ 虚拟机管理器和虚拟化管理 ® LinuxONE 提供" 由你作主的Linux ",这一理念也适用于虚 ...

  8. java的布局管理器_Java中提供了几种布局管理器

    近日,很多网友都在关注Java中提供了几种布局管理器这个话题,那么Java中提供了几种布局管理器具体情况是怎么样的呢?Java中提供了几种布局管理器的相关信息有哪些?下面的内容是小编为大家找到的关于J ...

  9. 包管理器_包管理器的演变

    包管理器 每个计算机化设备都使用某种形式的软件来执行其预期的任务. 在软件的早期,对产品进行了严格的bug和其他缺陷测试. 在过去的十年左右的时间内,该软件已通过Internet发布,目的是通过应用新 ...

  10. npm 包管理器_纱包管理器:npm的改进

    npm 包管理器 From bower to npm, package management for the web has come a long way. 从Bower到npm ,Web的软件包管 ...

最新文章

  1. 全局负载均衡与CDN内容分发
  2. SQLite 3 一些基本的使用
  3. c语言模板程序,模板模式 (C语言实现)
  4. 如何禁用 ASP.NET 网站的所有的 浏览器缓存 ?
  5. react 使用 mobx_如何使用React和MobX状态树构建基于状态的路由器
  6. dev控件swiftplot图滚动方法_无限轮播图使用Scroller就这么简单
  7. 【编程小题目6】字符数统计
  8. java最好性能手机_企业级Java应用最重要的4个性能指标
  9. C语言程序的内在分配:堆和栈以及char a[]和char*的区别
  10. 大数据 数据库 评测_大数据产品能力评测介绍.pdf
  11. UG命令大全及快捷键的用法用处说明
  12. 使用奇妙清单:轻松搞定家庭计划事项同步管理
  13. matlab中字符串的大小比较,matlab中字符串的最大大小
  14. 【网站】比较知名的大型公司官网清单可以收藏关注一下,欢迎您来补充
  15. 针对笔记本双显卡安装ubuntu16.04双系统,开机只显示背景图解决办法
  16. servlet基础:Servlet、ServletConfig、ServletContext
  17. 【操作系统】DOS界面与常用操作命令
  18. 远程监控系统中关于TP-Link路由器的设置方法
  19. 数字图像处理技术及实用 MATLAB实验报告及PS作业
  20. 输入一个大于3的整数n,判定它是否为素数。例题5.9

热门文章

  1. php重置按钮,input 标签中 reset 重置按钮点击后表单不能清空的原因
  2. PHP实现简单的注册页面(正则表达式练习)
  3. 什么是java全栈工程师
  4. SDJZU-墓碑上的文字
  5. android 闹钟设置铃声,安卓手机闹钟设置音乐铃声的方法
  6. 第九章、Zigbee模块指令系统
  7. 冯 • 诺依曼体系结构
  8. 美团2021届秋季校园招聘笔试真题解析:小美的仓库整理
  9. Python数据可视化大屏最全教程(全)
  10. 谦虚的向大家问个技术问题,树型结构的排序问题