propagation 事务的传播属性:

1、PROPAGATION_REQUIRED(*-required):支持当前事务,如果当前没有事务,就新建一个事务。(最常见的选择)

2、PROPAGATION_SUPPORTS(*-supports):支持当前事务,如果当前没有事务,就以非事务方式执行

3、PROPAGATION_MANDATORY(*-mandatory【强制性】):支持当前事务,如果当前没有事务,就抛出异常

4、PROPAGATION_REQUIRED_NEW(*-required_new):新建事务,如果当前存在事务,把当前事务挂起

5、PROPAGATION_NOT_SUPPORTED(*-not_supported):以非事务方式执行操作,如果当前存在事务,就把当前事务挂起

6、PROPAGATION_NEVER(*-never):以非事务方式执行,如果当前存在事务,则抛出异常

spring事务的隔离级别:

1、ISOLATION_DEFAULT(isolation[隔离]_default):这是一个platfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别,另外四个与JDBC的隔离级别相对应

2、ISOLATION_READ_UNCOMMITTED(read_uncommitted):这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据;这种隔离级别会产生脏读、不可重复读、幻读

3、ISOLATION_READ_COMMITTED(read_committed):保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据

4、ISOLATION_REPEATABLE_READ(repeatable_read):这种事务隔离级别可以防止脏读、不可重复读,但是可能出现幻读。它除了保证了一个事务不能读取另外一个事务未提交的数据外,还保证了避免了不可重复读。

5、ISOLATION_SERIALIZABLE(serializable):这是最高的事务隔离级别,事务被处理为顺序执行。除了防止脏读、不可重复读外,还避免了幻读。

什么是脏读、不可重复读、幻读?

脏读:

  指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据还没有提交,那么另外一个事务读到的是脏数据,依据脏数据所做的操作可能是错误的。

不可重复读:

  指在一个事务中,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问同一数据。那么在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生在一个事务内两次读到的数据是不一样的,因此称为不可重复读。

幻读:

  指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行修改,这种修改涉及到表中的全部数据行。同时第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么以后就会发生操作第一个事务的用户发现表中还有 没有修改的数据行,就好像发生了幻觉。

参考:https://www.cnblogs.com/yangy608/archive/2011/06/29/2093478.html

最新文章

  1. C#和.net的版本
  2. spring xmlns 记录
  3. 把某一字段更新为连续值的SQL
  4. instancesRespondToSelector与respondsToSelector的区别
  5. QT 网络编程
  6. 关于内存泄露分析插件 MAT 的用法
  7. sublime mac osx 命令行打开
  8. iOS开发UI篇—控制器的View的创建
  9. 新冲刺Sprint3(第三天)
  10. jQuery获取Select选中的Text和Value,根据Value值动态添加属性
  11. 外部函数接口 LibFFI
  12. 高一的我曾对自己说"要放慢脚步去生活"!?
  13. angular1.x + ES6开发风格记录
  14. kafka快速入门
  15. 【死磕 Spring】----- IOC 之深入理解 Spring IoC
  16. PADS Layout VX.2.3 制作PCB封装(Decal)时,导入DXF文件
  17. [20190409]pre_page_sga=true与连接缓慢的问题.txt
  18. How to remove tag on Github
  19. linux编写.sh脚本并赋权限
  20. JS中UTF-8和UTF-16互转

热门文章

  1. DaemonSet 典型应用场景【转】
  2. 2018.4.9 Ubuntu install kreogist-mu
  3. perl -p -i -w -e
  4. ssh整合思想 Spring与Hibernate的整合ssh整合相关JAR包下载 .MySQLDialect方言解决无法服务器启动自动update创建表问题
  5. iOS 证书、真机调试、发布 App Store
  6. 关于removeFromSuperview
  7. NOIP模拟赛 高级打字机
  8. 【离线 线段树分治】bzoj4025: 二分图
  9. NowCoder 9.9 模拟赛
  10. Mybatis 循环 foreach, 批量操作