栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

1、Spring事务管理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1、Spring事务管理

spring事务管理 什么是事务?
事务是数据库中执行操作的最小单元,不可再分,要么全部执行成功,要么全部执行失败。
事务的特性
1、原子性:事务是最小的,不可再分。
2、一致性:要么成功,要么失败。
3、隔离性:相互隔离,彼此互不影响。
4、持久性:提交的事务保持不变。
局部事务
单个资源,比如单个服务器或数据库。并且事务由底层资源管理。
全局事务(也称分布式事务)
多个资源,比如多个服务器和数据库。并且spring中事务由单独、专门的事务管理器进行管理。
spring声明式管理
使用时只需要声明@Transatinal注解即可。spring声明式管理采用了动态代理机制(动态代理机制分为:JDK和CGLIB)。
底层原理(应用了AOP思想)

spring声明式事务使用
在spring环境中:
	1、在配置类上方使用EnableTransactionManagement注解。
	2、@transactional注解可以添加在业务类、接口(spring5.0版本以上)、方法上。

事务的传播方式
传播级别:required和required new。
required:若没有事务,则开启新事务;若有事务,则继续使用当前的事务。
required new:若没有事务,则开启新事务;若有事务,则停止原来的事务,开启新的事务。

注意:事务传播的前提是,调用其他类的方法,传播级别才能生效;若在同一个类中调用不同的方法,则只能共用同一个事务。

事务回滚
默认情况下,业务方法抛出运行时异常,事务回滚可以自定义回滚条件,出现什么异常回滚,出现什么异常不回滚。
@Transactional(rollbackFor=xxxException.class,norollbackFor=xxx.Exception.class)

注意:若在测试方法/测试类中使用@transactional,则事务会执行测试方法,但执行完后事务会回滚,不会提交。
事务的隔离级别

属性:isolation
属性值:
   1、读未提交:read uncommitted。事务可以读取到其他事务未提交/未回滚之前的数据。
   2、读已提交:read committed
   3、可重复读:repeatable read
   4、可串行化:serializable
mysql的隔离级别是:可重复读(不产生幻读,因为通过已经通过其他方式得到解决)。
oracle、sql server的隔离级别是:读已提交。

读未提交

读已提交

可重复读

可串行化

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995752.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号