事务

Java中事务处理

事务的简介

事务(Transaction) 是一个业务, 是一个不可分割的逻辑工作单元, 具备ACID特性, 实际工作中可借助Spring进行事务管理.

事务的四大特性: ACID
  • 原子性(Atomic): 强调不可分割性, 事务的多个操作要么都成功, 要么都失败, 所有的操作在成功与失败者两种状态上表现相同.
  • 一致性(Consistency): 事务使得系统从一个一致的状态转换到另外一个一致的状态
  • 隔离性(Isolation): 事务与事务之间应该是相互隔离的
  • 持久性(Durability): 事务提交后,数据要持久的保存.

Spring提供了两种事务管理方式, 编程式事务和声明式事务.

我们一般使用声明式事务,在需要进行事物的操作上添加@Transactional注解的方式.

Spring中注解事务的参数
  1. timeout 事务的超时时间,默认值为-1,表示没有超时显示。如果配置了具体时间,则超过该时间限制但事务还没有完成,则自动回滚事务。
  2. read-only 指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true。
  3. rollback-for 用于指定能够触发事务回滚的异常类型,如果有多个异常类型需要指定,各类型之间可以通过逗号分隔。
  4. no-rollback- for 抛出 no-rollback-for 指定的异常类型,不回滚事务。
  5. isolation 事务的隔离度,默认值采用 DEFAULT。

说明:@Transactional 注解可以用在方法上也可以添加到类级别上。当把@Transactional 注解放在类级别时,表示所有该类的公共方法都配置相同的事务属性信息。当类级别配置了@Transactional,方法级别也配置了@Transactional,应用程序会以方法级别的事务属性信息来管理事务,换言之,方法级别的事务属性信息会覆盖类级别的相关配置信息。

事务传播特性分析

事务传播(Propagation)特性指不同业务对象中的事务方法之间相互调用时, 事务的传播方式.
在这里插入图片描述

@Transactional(propagation=Propagation.REQUIRED)

如果没有事务创建新事物,如果有当前有,参与当前事务.
在这里插入图片描述

@Transactional(propagation=Propagation.REQUIRES_NEW)

必须是新事务,如果当前有事务, 挂起当前事务并且开启新事务.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值