| 版权声明:本文为博主原创文章,未经博主允许不得转载。

前言:

在学习事务确实有不少弯路,那么今天笔者就用例子讲解一下事务,让初学者少走一些弯路。


【回顾事务】问:什么是事务?

      答:用专业术语来说事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败。

  举个银行转账的例子:

  ①张三账上有2000元,李四账号也有2000元。张三要向李四转账1000元,正常来说应该是张三账上-1000元,李四账上+1000元。最后张三账上还剩1000元,李四账上3000元。这样就完成了一个转账的操作。

  ②但这组操作不应该出现的情况就是:张三转了1000元之后断电了,或者出现其他的特殊情况。这样就不应该出现张三转出1000元,而李四账上没收到1000元。所以在这种情况下的一组操作我们可以用一个事务来管理。如果这组操作加入了事务管理里面,那么这组操作就必须一起成功,或者一起失败。一起成功就是张三转出1000元,还剩1000元,李四收到1000元账上3000元。如下图:

以上就是事务的概念:这组操作要么全部成功,要么全部失败。

在事务当中有一些相关的特性:

事务的特性:

      1.原子性(是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生)

      2.一致性(指的是事务执行前后数据的完整性必须保持一致,举个例子:张三转账前是2000元,李四2000元,总数是4000元,转账后张三账上1000元,李四3000元,总数也是4000元。所以说不能出现张三转出去,李四没收到这种情况。)

      3.隔离性(多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。举个例子:假设有两个事务同时操作数据库,事务1在修改张三的的记录,事务2同时也在修改张三的记录。那么就会出现①事务重复修改,②一开始事务修改后的记录被第二个事务所覆盖)如下图:

        问:怎么解决这个问题(①重复修改 /②被覆盖)呢? 答:数据库有相应的隔离级别,我们可以通过设置这种隔离级别来解决这个问题

      4.持久性(一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响)

Java中事务的概念的更多相关文章

  1. Java中事务总结详解(精华)

    1.什么是JAVA事务? 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (is ...

  2. java 中包的概念,常量,静态与继承

    一.包的概念:创建,使用. 1.新建包: 最上面一行,之前不能再有其它代码了. package 包名; 注意:包名一般都有命名的规范.例如:com.itnba.maya.zy(从大到小). 2.使用包 ...

  3. java中接口的概念及使用(补充final修饰符的使用)

    接口 初期理解,可以是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示 class 用于定义类 interface 用于定义接口 接口定义时,格式特点: 1.接口中常见的 ...

  4. Java中的锁概念

    掌握Java中锁是Java多线程编程中绕不开的知识,只有知道理解Java各种锁才能在编码过程中灵活运用,写出更高效的多线程程序.而理解掌握锁的第一步,可从宏观上对比理解一下各种锁概念. 公平锁/非公平 ...

  5. java 中接口的概念

    接口接口在java中是一个抽象的类型,是抽象方法的集合,接口通常使用interface来声明,一个类通过继承接口的方式从而继承接口的抽象方法.接口并不是类,编写接口的方式和类的很相似,但是他们属于不同 ...

  6. java中引用的概念

    强引用(StrongReference) 强引用就是指在程序代码之中普遍存在的,比如下面这段代码中的object和str都是强引用: 1 2 Object object = new Object(); ...

  7. java 中的包概念

    Java 中的包package, 就是电脑中的文件夹.我们平时在工作中,文件太多时,都会新建文件夹进行分类管理,java 中的包也是类似的道理,当我们的类太多时,也需要进行分类管理,这时我们就会把类文 ...

  8. 关于java中指针的概念

    今天寡人遇到一个问题,扫描非关系数据库中的图(由node和rel组成),将其转化成由寡人自定义的gnode和gedge组成的图. gnode类包含结点的id,label和包含此gnode的gedge的 ...

  9. java中继承的概念

    继承是类的三大特性之一,是java中实现代码重用的重要手段之一.       java中只支持单继承,即每个类只能有一个父类.       继承表达的是is a的关系,或者说一种特殊和一般的关系.   ...

随机推荐

  1. elasticsearch,python包pyes进行的处理

    elasticsearch:高性能搜索引擎,官网:https://www.elastic.co/products/elasticsearch/ 对于它相信大家都不陌生,es的使用已经广泛存在 各大网站 ...

  2. js中快速获取数组中的最大值最小值

    var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math.min.apply(null, a)); //最小值 多维数组如下 v ...

  3. NSOperationQueue的基本使用

    NSOperationQueue的作用 NSOperation可以调用start方法来执行任务,但默认是同步执行的 如果将NSOperation添加到NSOperationQueue(操作队列)中,系 ...

  4. BZOJ 1858 线段树

    标记会重叠需要判断. #include <bits/stdc++.h> using namespace std; inline int Max(int x,int y) {return x ...

  5. linux命令:gzip

    1.命令介绍: gzip用来压缩或解压文件,对文本文件的压缩率有60~70%. 2.命令格式: gzip [选项] 文件/目录 3.命令参数: -a或--ascii  使用ASCII文字模式. -c或 ...

  6. 我们正在等待一次技术革命的到来; We are waiting for the arrival of a technological revolution

    In the future, there must be a significant technological revolution just like Industrial Revolution. ...

  7. sass基础编写流程

    这是之前整理在word上的基础流程 sass是Ruby语言开发的一个用于动态编程css文件的框架 所以sass的运行依赖Ruby环境 所以要先安装Ruby 参见详细教程(安装参照慕课网有详细的教程) ...

  8. 学习笔记:CSS3的filter属性

    CSS3的filter属性 (版权归原作者所有) http://www.jianshu.com/p/ca7a2bdcc1e7/comments/4956985 filter: blur(5px); f ...

  9. C#异常语句

    try: 用于检查发生的异常,并帮助发送任何可能的异常. catch: 以控制权更大的方式处理错误,可以有多个catch子句. finally :无论是否引发了异常,finally的代码块都将被执行. ...

  10. 转发-UI基础教程 – 原生App切图的那些事儿

    UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...