事务定义

事务(Transaction)是一个业务,是一个不可分割的逻辑工作单元,基于事务可以更好的保证业务的正确性。

事务的特性

事务具有ACID特性,分别是:
原子性(Atomicity):一个事务中的多个操作要么都成功,要么都失败。
一致性(Consistency):例如存钱操作,存之前和存之后的总钱数是一致的。
隔离性(Isolation):事务与事务应该是相互隔离的。
持久性(Durability):事务一旦提交,数据就要持久保存。

Spring中的事务管理

Spring框架中提供了一种声明式事务的处理,此方式基于AOP代理,可以将具体业务逻辑与事务处理进行解耦合。(让业务代码不受污染或少量污染,就可以实现事务控制)
<在Spring Boot项目中,内部提供了事务的自动配置,当我们在项目中添加指定依赖spring-boot-starter-jdbc时,框架会为项目注入事务管理对象,最常用的为DataSourceTransactionManager对象>

Spring中事务管理实现

基于注解@Transactional配置方式进行声明式事务管理
步骤
(1)启用声明式事务管理,在项目启动类上添加@EnableTransactionManagement,新版Spring Boot项目可以不添加
(2)将@Transactional注解添加到合适的业务类或方法上,并设置合适的属性信息
例:

@Transactional(
        readOnly = false/true,//是否为只读事务(只读事务只允许查询操作)-----默认值是false(翻底层源码)
        rollbackFor = Exception.class, //异常回滚事务-----默认值是RuntimeException与Error,但是检查异常不回滚
        noRollbackFor = Exception,//检查异常情况下不回滚-----没有默认值
        timeout=30,//是否支持事务超时-----默认值-1,表示不支持事务超时,可以给定时间(单位为秒)
        isolation = Isolation.READ_COMMITTED,//事务的隔离级别-----默认值DEFAULT---建议READ_COMMITTED(读已提交)
        propagation = Propagation.Required//事务的传播特性-----默认值Propagation_REQUIRED
        )
@Transactional(propagation=Propagation.REQUIRES_NEW)//必须是新事物,如果有当前事务,挂起当前事务并开启新事物

孟小瑶
7 声望2 粉丝

« 上一篇
Spring AOP

引用和评论

0 条评论