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. 过程 : 系统语言和jobPost 语言版本

    在前台,用户选择语言会是checkbox list,可以选择多个.如果英文是主要语言,那么 ·选择英文而已,jobPosts 只显示英文版本 ·如果jobPost有英文和中文,只显示英文 ·如果job ...

  2. [微信小程序-开发工具]快捷键

    1.进入快捷键  >  > 2.快捷键 1.元素面板 ↑↓:导航元素 →←:展开/折叠 Enter:编辑属性 H:隐藏元素 F2:切换编辑HTML 2.样式窗口 Tab/Shift + T ...

  3. fmt标签格式化数字和时间

    有时候需要格式化输出数字和时间,fmt 标签是个很好用的标签,下面是我做的总结: 在页面的头部加入这个标签 <%@ taglib uri="http://java.sun.com/js ...

  4. JAVA开发环境搭建 - JDK安装及环境变量配置

    1.前提条件 系统:本教程以WIN7系统为例 JDK:本教程以jdk-7u79-windows-x64为例 2.安装步骤 双击运行JDK安装程序

  5. mysql like 多条

    例如: 有一张表,表中有字段,id ,name ,想模糊查询出表里name 包含 "张三“或者”李四“ 的值 select name from user where ( name like ...

  6. 《Django By Example》第八章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:还有4章!还有4章全书就翻译完成了 ...

  7. 【转】Django中的request与response对象

    关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...

  8. spring mvc和web-flow的整合方案

    发现了一份整合spring MVC 和webflow的很好的资料,日后翻译出来发布.先记着. http://docs.spring.io/spring-webflow/docs/2.3.x/refer ...

  9. iOS SnapKit自动布局使用详解

    对于自动布局: 我们在 StoryBoard 中可以使用约束实现,简单明了,但如果用纯代码来设置约束就很麻烦了 OC里面,我们常用的有Masonry,SDAutoLayout Swift里,我们有Sn ...

  10. YII contoller控制器之间跳转的方法redirect

    一个contoller CustomerController里怎么调用另一个controller里的action,Acontoller调用SiteContoller的actionShow($id), ...