------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

本篇博客会详细讲述Spring中的事务,会展开来用语言解释,用于了解概念和准备面试

事务的概念:

  一个或者一组sql语句来完成一个功能!要么都执行,要么都不执行

事务具有的四个特性:  ACID特性!

        01.原子性:一个事物都是一个不可分割的单位!所有的操作 要么都执行,要么都不执行!

        02.一致性:事务必须是数据库从一个一致性的状态到达另一个一致性的状态!

        03.隔离性:一个事务的执行不会被其他的事务干扰!事务之间相互独立!

        04.持久性:事务一旦被提交!这个操作对数据库来说是永久性的!

Spring的事务管理:

         事务本事是数据库中的概念! 按理说应该在数据访问层(dao)!

        

        绝大多数的情况下,我们是把事务 提升到  业务逻辑层!

        01.使用spring的事务代理工厂 来 管理事务!

        02.使用spring的注解                来 管理事务!     常用

        03.使用AspectJ的AOP配置     来 管理事务!      常用

需要掌握的两个属性名:        

  isolation:事务的隔离级别!

           01.default:采用数据库默认的事务隔离级别

               001.mysql ---》repeatable-read

               002.oracle---》read_committed

           02. repeatable-read:可重复读取!解决了脏读,不可重复读,没解决幻读!

           03. read_committed:读已提交! 解决了脏读,没解决不可重复读,幻读!

           04. read_uncommitted:读未提交!什么都没有解决!

           05. serializable:串行化!级别最高!效率最低!不存在并发的问题!

        propagation: 事务的传播行为:一共7中方式!

           01.required:是spring默认的事务传播行为!

                  指定的方法必须在事务中执行!如果没有事务,则会自动创建一个事务!

           02.supports:有事务就在事务环境下执行,没有事务就直接执行!

           03.mandatory:

                  指定的方法必须在事务中执行!如果没有事务,则抛出异常!

           04.requires_new:总是新创建一个事务!

              如果当前方法存在事务,则把当前的事务挂起,直到新创建的事务执行完毕后执行!

           05.not_supported:指定的方法不能在事务中执行!如果当前方法存在事务,则把当前的事务挂起!

           06.never:指定的方法不能在事务中执行!如果当前方法存在事务,则抛出异常!

           07.nested:指定的方法必须在事务内执行!

               如果执行的方法没有事务,则会创建一个事务!

               如果执行的方法没有事务,则会嵌套执行!

        

       timeout_default:定义了事务默认的超时时间!

Spring事务管理的接口:PlatformTransactionManager

          常用的两个实现类:

          01.使用jdbc和MyBatis时     使用DataSourceTrancationManager

          02.使用hibernate时              使用HibernateTrancationManager

Spring事务回滚的方式:

          默认的回滚方式--》发生运行时异常回滚!发送受查异常时提交!

          受查异常肯定需要我们手动的设置回滚方式!

          运行时异常严重!一旦发生,JVM中止执行!

实现自定义异常类!RuntimeException -->  Exception --->  Throwable

最新文章

  1. 8.4.2 Fresco
  2. CXF和spring整合遇到的问题:No bean named 'cxf' is defined
  3. jasperreports+iReport制作报表笔记
  4. [BZOJ4632]树的编码
  5. zoj The 12th Zhejiang Provincial Collegiate Programming Contest Beauty of Array
  6. json string 与object 之间的转化
  7. DOCTYPE, HTML和XHTML, Strict DTD和Transitional DTD, Quirks Mode和Standard Mode
  8. Android xml 解析
  9. 关于DevExpress的gridControl的简单使用
  10. Java设置的读书笔记和集合框架Collection API
  11. linux查找文件的命令【转】
  12. String.prototype.trim
  13. [活动] 【奖品撩人】部落守卫者集结令·这一回同程SRC的安全由“我”守卫!
  14. C# 编译运行原理
  15. 手动创建binary log files和手动编辑binary log index file会有什么影响
  16. Revit API布置卫浴装置
  17. textrank的方法,大概懂了
  18. 技能|三次简化一张图:一招理解LSTM/GRU门控机制
  19. POJ 1160
  20. Ionic Js三:下拉刷新

热门文章

  1. jmeter中类型转换,字符串,转数字型或浮点型
  2. 一对一关联关系基于主键映射的异常 IdentifierGenerationException
  3. BIND简易教程(1):安装及基本配置
  4. LayIM.NetClient 组件开发记录
  5. C# 面向对象之多态
  6. 在servlet中使用Spring注入
  7. 十四、详述 IntelliJ IDEA 提交代码前的 Code Analysis 机制
  8. Python入门基础:代码的编码风格
  9. 第20章 USART—串口通讯
  10. unittest单元测试框架之测试环境的初始化与还原(fixture)(五)