1.什么是事物?

  事物是逻辑上的的一种操作,这个操作过程中的每一个元素要么全部成功,要么全部失败.例如,银行转账过程视为一个事物,转出过程和转入过程要求全部成功或全部失败,通过提交事物或者回滚事物实现.

2.事物的作用

  保证一组操作中要么全部成功,要么全部失败.

3.事物的特性(重要)

  ACID

  Atomicity 原子性:是指事物是一个不可分割的工作单位事物的操作要么全部成功,要么全部失败

  Consister 一致性:事物前后数据的完整性保持一致(例如银行转账,转出账号少多少钱,转入账号就需要多多少钱)

  Isolation 隔离性:是指多个用户并发访问时候,彼此不会产生影响

  Durability 持久性:是指事物一旦被提交,他对数据库的改变时永久性的.

4.事物的操作

  A:mysql事物操作

    开启事物      start transaction

    提交事物      commit

      回滚事物      rollback

    注:事物只有回滚或者提交时才会执行

    mysql中有两种方式管理事物

      1)手动提交

        start transaction;
        sql语句操作数据库;
        commit;

      2)自动提交

        set autocommit = 0; ---- 0 :off   1:on

  B:jdbc事物操作  --- 通过Connection对象方法操作

    开启事物:connection对象.setAutoCommit=false;

    提交事物:connectin对象.commit();

    回滚事物:connection对象.rollback();

    注:通畅将事物操作的代码放到try catch中,当异常发生时回滚事物

  C:DBUtils操作事物

    开启事物:conn.setAutoCommit=false

    提交事物:DBUtils.commitAndClose(conn)

    回滚事物:DBUtils.rollbackAndClose(conn)

    注:new Query()时,不传递参数

5.并发访问问题及解决方式

  并发访问问题:

    脏读:事物A读取到事物B为提价的数据

    不可重复读:事物A还未提交时,但事物B已经提交改变了数据库时,A重复读数据库的数据为事物B修改后的数据(因为事物A未提交数据,它重复读取数据时应该为开启事物时数据)

    虚读/幻读:于不可重复读相似.更侧重于读取的数据不一致.

  解决方式:   ---- 设置数据库的隔离级别

  1.read uncommitted 读未提交;

    2.read committed 读已提交:   可解决脏读问题

    3.repeatable read 可重复度:    可解决问题 脏读和不可重复读

    4.serializable 串行化 同时只能执行一个事物,相当于事物中的单线程

  安全性能对比:

    安全:

    serializable > repeatable read > read committed > read uncommitted

    性能;

    serializable < repeatable read < read committed < read uncommitted

  #####常见的查询操作

    cmd命令查询当前事物的隔离等级:select @@tx_isolation;

    设置当前事物的隔离等级:set session transaction isolation level 隔离等级;

    查看当前是否为自动提交:show variables like '%commit%';

Java事物基础总结的更多相关文章

  1. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  2. 第2章 Java编程基础

    本章重点 ·Java的基本语法形式 ·Java语言中的常量与变量 ·Java语言运算符的使用 ·Java程序的流程控制 ·Java中方法的定义与使用 ·Java中数组的定义与使用 2.1 Java的基 ...

  3. 第二十五节:Java语言基础-面向对象基础

    面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基 ...

  4. 2018.6.13 Java语言基础复习总结

    Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合.机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计 ...

  5. Java底层基础题

    一.Java底层基础题 1.SpringMVC的原理以及返回数据如何渲染到jsp/html上? 答:Spring MVC的核心就是DispatcherServlet , 一个请求经过Dispatche ...

  6. Java编程基础-面向对象(中)

    本章承接Java编程基础-面向对象(上)一文. 一.static关键字 在java中,定义了一个static关键字,它用于修饰类的成员,如成员变量.成员方法以及代码块等,被static修饰的成员具备一 ...

  7. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  8. Java以基础类库

    Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...

  9. Java SE 基础:注释

    Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...

随机推荐

  1. mybatis系列笔记(4)---输入输出映射

    输入输出映射 通过parameterType制定输入参数类型 类型可以是简单类型(int String)也可以是POJO本身 或者包装类 1输入映射 关于输入简单类型和pojo本身的我就不写了,因为比 ...

  2. NAT穿透进行P2P文件传输

    实现一个简单的p2p文件传输,主要解决NAT穿透问题,使用tcp协议传输. NAT背景介绍 简介 NAT(Network Address Translation ,网络地址转换) 是一种广泛应用的解决 ...

  3. Java面试12|Linux及Shell脚本

    1. 随便写一个awk的命令.用awk统计文本行数 (1)最近登录的5个帐号 last -n 5 | awk -F ':'(指定域分割符号) '{print $1}' 读入有'\n'换行符分割的一条记 ...

  4. 基于 Koa平台Node.js开发的KoaHub.js的控制器,模型,帮助方法自动加载

    koahub-loader koahub-loader是基于 Koa平台Node.js开发的KoaHub.js的koahub-loader控制器,模型,帮助方法自动加载 koahub loader I ...

  5. iOS PureLayout使用

    PureLayout是iOS Auto Layout的终端API,强大而简单.由UIView.NSArray和NSLayoutConstraint类别组成.PureLayout为大多数Auto Lay ...

  6. 利用Socket与硬件通信(智能家居)

    前几天做一个智能家居APP,硬件段使用的是ESP8266WIFI模块,其实不管是WIFI模块还是蓝牙,通信都是同样一个道理,获取IP和端口来进行通信. 我是通过XCOM v2.0 发送信息,移动端接收 ...

  7. 【js数据结构】栈解决佩兹糖果盒问题

    现实生活中栈的一个例子是佩兹糖果盒. 想象一下你有一盒佩兹糖果, 里面塞满了红色. 黄色和白色的糖果, 但是你不喜欢黄色的糖果. 使用栈( 有可能用到多个栈) 写一段程序, 在不改变盒内其他糖果叠放顺 ...

  8. Selenium自动化脚本开发总结

    Selenium Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...

  9. 富文本,NSAttributedString,当需要改变的内容有相同的时候的解决方法

    在开发的过程中可能会遇到富文本展示,例如:一行文本,前面是题后面是答案,题和答案用不同的颜色字体,但是答案的内容在题总也有,这时候用平常的方法就会展示错误,因为把题中的内容改变了颜色二实际答案却没有改 ...

  10. JavaScript实现常见排序算法

    列表 冒泡排序 选择排序 插入排序 快速排序 希尔排序 归并排序 冒泡排序 // 输入:[5, 6, 3, 4, 8, 0, 1, 4, 7] // 输出:[0, 1, 3, 4, 4, 5, 6, ...