配色: 字号:
事务管理
2018-01-13 | 阅:  转:  |  分享 
  


Spring事务管理



1. Spring事务管理 1-1

1.1. Spring事务概述 1-1

1.2. Spring事务案例分析 1-1

2. Spring声明式事务处理 2-2

2.1. 基于注解方式实现 2-3

2.2. 基于xml方式实现 2-3

3. Spring事务增强 3-5

3.1. Spring事务的传播特性 3-5

3.2. Spring事务的隔离级别 3-6

4. 总结 4-8

4.1. 重点和难点分析 4-8

4.2. 常见FAQ 4-8



Spring事务管理

Spring事务概述

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

事务四大特性:ACID

子型事务中的多个操作要么都成功要么都失败

一致性(例如存钱操作,存之前和存之的应该是一致的

隔离性(事务与事务应该是相互隔离的

持久性(事务一旦提交,数据要持久保存



Spring提供了两种事务管理方式,编程式事务和声明式事务。编程式事务指的是通过编码方式实现事务;声明式事务基于AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染,因此在实际使用中声明式事务用的比较多。

Spring中声明式事务处理有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于@Transactional注解的方式。



本讲重点讲解实际项目中最常用的声明式事务管理,以简化事务的编码操作。



Spring事务案例分析

例如现有两个订单操作,需要更新库存。



当库存充足时两个事务都可以成功,当库存不够时有的事务就要回滚。







说明:Spring声明式事务管理底层基于AOP实现

Spring声明式事务处理



基于注解方式实现





Step1:在spring配置文件中启用事务注解













配置事务管理器







配置事务处理方式






propagation="REQUIRED"

isolation="READ_COMMITTED"

timeout="-1"

read-only="false"

rollback-for="java.lang.Throwable"

no-rollback-for=”NoTransactionException"/>















课堂练习:



Step01:定义事务管理器


class="org.springframework.jdbc.datasource.DataSourceTransactionManager">





定义事务策略















































事务传播特性:方法之间相互时事务的传播方式重点掌握Propagation.REQUIRED@Transactional(propagation=Propagation.REQUIRED)如果没有事务创建新事务,如果当前有事务参与当前事务

@Transactional(propagation=Propagation.REQUIRES_NEW)

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





课后了解:



@Transactional(propagation=Propagation.MANDATORY)必须有事务,如果当前没有事务就抛异常

@Transactional(propagation=Propagation.NEVER)绝对不能有事务,如果在事务中调用则抛出异常

@Transactional(propagation=Propagation.NESTED)必须被嵌套到其他事务中

@Transactional(propagation=Propagation.NOT_SUPPORTED)不支持事务

@Transactional(propagation=Propagation.SUPPORTS)支持事务,如果没有事务也不会创建新事务

事务,不可重复,幻读



更改会话级的隔离级别





更改系统级的隔离级别





思考:

1)MySQL中如何查看当前系统默认隔离级别?

showvariableslike''%storage_engine%'';

2)MySQL中如何设置事务隔离级别?

setsessiontransactionisolationlevel''reapableread''



总结

重点和难点分析



常见FAQ

























1-6

JAVA培优qilei@tedu.cn







献花(0)
+1
(本文系金银宝100首藏)