1、事务的四大特性

(1)原子性(Atomicity):

原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对数据库有任何影响

(2)一致性(Consistency):

一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。例如转账操作:A账户转入B账户1000元,A账户少了1000,B账户多了1000;事务结束后总金额保持不变。

(3)隔离性(Isolation):

隔离性是指当多个线程并发访问数据库时,比如同时访问一张表,数据库每一个用户开启的事务,不能被其他事务所做的操作干扰,多个并发事务之间,应当相互隔离。

例如同时有T1和T2两个并发事务,从T1角度来看,T2要不在T1执行之前就已经结束,要么在T1执行完成后才开始。将多个事务隔离开,每个事务都不能访问到其他事务操作过程中的状态。

(4)持久性(Durability):

持久性是指事务的操作,一旦提交,对于数据库中数据的改变是永久性的,即使数据库发生故障也不能丢失已提交事务所完成的改变。

2、事务的隔离级别

脏读:数据库的一个事务A正在使用一个数据但还没有提交,另外一个事务B也访问到了这个数据,还使用了这个数据,这就会导致事务B使用了事务A没有提交之前的数据。

不可重复读:在一个事务A中多次操作一个数据,在这两次或多次访问这个数据的中间,事务B也操作此数据,并使其值发生了改变,这就导致同一个事务A在两次操作这个数据的时候值不一样,这就是不可重复读。

幻读:一个事务重新执行一个查询,返回一套符合查询条件的行, 发现这些行因为其他最近提交的事务而发生了改变

隔离级别从低到高分为四级:

(1),Read uncommitted(读未提交):

写事务阻止其他写事务,避免了更新遗失。但是没有阻止其他读事务,可能会引发脏读

(2),Read committed(读已提交):

读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。

该隔离级别避免了脏读,但是却可能出现不可重复读。事务A事先读取了数据,事务B紧接了更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。

(3),Repeatable read(可重复读取):

读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。

避免了不可重复读取和脏读,但是有时可能出现幻读。这可以通过“共享读锁”和“排他写锁”实现。

(4),Serializable(串行化):

读加共享锁,写加排他锁。这样读取事务可以并发,但是读写事务之间都是互斥的,一个事务执行完,才执行下一个事务序列化是最高的事务隔离级别,同时代价也花费最高,性能很低,一般很少使用,在该级别下,事务顺序执行,不仅可以避免脏读、不可重复读,还避免了幻像读。

隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、幻读和第二类丢失更新这些并发问题

java 事物_java事务相关推荐

  1. java 事物 notsupport_Spring事务传播属性介绍(二).mandatory、not_supported、never、supports...

    Required.Required_New传播属性分析传送门:https://www.cnblogs.com/lvbinbin2yujie/p/10259897.html Nested传播属性分析传送 ...

  2. java 嵌套事务_Java事务以及嵌套事务

    知识点:java事务属性 Propagation取值: REQUIRED(默认值):在有transaction状态下执行:如当前没有transaction,则创建新的transaction: SUPP ...

  3. java service层 事务_Java高并发秒时啊API之Service层1

    ---2-1 使用Spring托管Service依赖理论---------------------------- spring ioc优势(工厂模式): 1.对象创建统一托管 2.规范的生命周期管理 ...

  4. java jta 例子_Java事务与JTA

    一.什么是JAVA事务 通俗的理解,事务是一组原子操作单元,从数据库角度说,就是一组SQL指令,要么全部执行成功,若因为某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令.更简答的说就是:要么 ...

  5. java中的事务管理

    一.事务是什么 1.事务的四个特性 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行. 一致性(consistency) ...

  6. Java中的事务——全局事务与本地事务

    转载自   Java中的事务--全局事务与本地事务 在上一篇文章中说到过,Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务. 这是从事务的实现角 ...

  7. Java中的事务——JDBC事务和JTA事务

    转载自 Java中的事务--JDBC事务和JTA事务 我的博客中曾经关于事务有过很多讨论,之前的事务介绍基本都是数据库层面的事务,本文来介绍一下J2EE中和事务相关的内容,在阅读本文之前,希望读者对分 ...

  8. java数据库编程——事务

    [0]README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java数据库编程--事务 的基础知识 : 2)for database co ...

  9. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

最新文章

  1. pandas dataframe与series
  2. 122网络各层中的设备是什么以及工作原理
  3. SpringBoot项目中静态资源加载失败,那可能是自定义配置类继承了WebMvcConfigurationSupport这个类
  4. 用户认证-什么是会话
  5. Golang 常见设计模式之选项模式
  6. 行业最大!黑鲨5系列将搭载5320mm²双VC散热:冰封骁龙8
  7. angular--Observable总结
  8. 【iOS】Touch Up Inside 和 Touch Up Outside 的区别
  9. windows 弹出 api-ms-win-crt-runtime-l1-1-0.dll 丢失的问题
  10. 时光 php,ctphp-php教程-时光划过那刹那-PHP教程--创业的风,吹向了年轻之长藤个人博客网站...
  11. android手机远程控制电脑源代码,手把手教你用安卓手机实现远程控制电脑-网络教程与技术 -亦是美网络...
  12. Mac的聚焦搜索Spotlight搜索不准确问题
  13. 两步验证 非双重认证
  14. 计算机共享账户密码删除吗,win10系统删除已记住的访问共享的账户与密码的详细技巧...
  15. QQ用户的帐号和密码安全
  16. android 三大框架是什么,聊聊Android中的三大框架
  17. HTML5面试题目汇总(一)
  18. TFN-F1系列光时域反射仪(OTDR)功能
  19. Invalid data found when processing input
  20. 动态壁纸安卓_梦象动态壁纸下载

热门文章

  1. 2、Flutter 填坑记录篇
  2. mpvue 中使用 wx-f2 tooltip 失效解决
  3. 鲲鹏920 centos7 postgresql12 postgis2.5.4编译
  4. conda和pip的区别
  5. 1092. To Buy or Not to Buy (20)
  6. spring框架(六)之拦截器
  7. xamarin android 标签,安卓端Tabbedpage调整在底部位置和标签及取消Android API28 以下的点击特效—-xamarin.forms学习笔记(一)...
  8. Java获取本地ip方法_Java获取本地IP方法详解
  9. 【OS学习笔记】十八 保护模式五:保户模式下如何进行内存保护 与 别名段的意义与作用 对应汇编代码
  10. USB转WIFI无线网卡驱动程序(RT5370驱动程序)的移植记录之一