• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

雕刻自我

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Spring学习笔记之事务

一、事务概念:事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,要么都失败,如果有一个失败则所有操作都失败。

二、事务的四个特性(ACID):

  1、原子性:要么都成功要么都失败

  2、一致性:操作之前和操作之后的状态时一致的

  3、隔离性:事务之间相互隔离

  4、持久性:操作后的影响是永久的

三、事务的使用(一般加到Service层)

  事务管理底层使用了AOP原理

  1、在spring配置文件配置事务管理器

  2、在spring配置文件开启事务注解

    (1)、在配置文件中引入名称空间tx

    (2)、开启事务注解

  3、在类上或者方法上使用@Transactional添加注解

四、事务操作,参数配置

  1、propagation:传播行为(多事务方法直接进行调用,这个过程中事务是如何进行管理的)例如a方法调用b方法

    (1)、REQUIRED(默认):如果a方法本身有事务,调用b方法后,b方法使用当前a方法里面的事务;如果a方法中没有事务,调用b方法后创建一个新事务

    (2)、REQUIRED_NEW:无论a方法是否有事务,调用b方法后都创建新的事务,a方法的事务挂起

    (3)、SUPPORTS:如果有事务则在当前事务中运行,否则可以不在事务中运行

    (4)、NOT_SUPPORTED:当前的方法不应该在事务中运行,如果有运行的事务则挂起

    (5)、MANDATORY:当前的方法必须运行在事务中,如果没有正在运行的事务则抛出异常

    (6)、NEVER:当前方法不应该在事务中运行,如果有运行的事务,就抛出异常

    (7)、NESTED:如果有事务在运行,当前方法就应该在这个事务的嵌套事务内运行,否则就启动一个新的事务,并在它自己的事务中运行

  2、ioslation:事务隔离级别

    (1)、脏读:一个未提交的事务读取到另一个未提交事务的数据

    (2)、不可重复读:一个未提交的事务读到提交事务的修改的数据,一直有事务提交,每次读到的数据都不一样

    (3)、幻读:一个未提交的事务读到提交事务的添加的数据

隔离级别
  脏读 不可重复读 幻读
READ UNCOMMITTED 读未提交 有 有 有
READ COMMITTED 读已提交 无 有 有
REPEATABLE READ 可重复读 无 无 有
SERIALIZABLE 串行化 无 无 无

 

  3、timeout:超时时间(默认是-1,不超时,设置时间单位为秒)

  4、readOnly:是否只读(默认是false,如果改为true则只能进行查询操作)

  5、rollbackFor:回滚(设置对那些异常进行回滚)

  6 、noRollbackFor:不回滚(设置对那些异常不进行回滚)

posted on 2020-11-03 22:43  雕刻自我  阅读(84)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3