ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

String事务

2021-05-20 19:32:54  阅读:161  来源: 互联网

标签:回滚 String ISOLATION 事务 PROPAGATION 脏读 异常


String事务
声明式五个特性:传播机制 隔离机制 只读 事务超时 回滚原则
配置方式:
编程式事务管理:
TransactionTemplate(推荐)
PlatformTransactionManager
声明式事务管理
结合aop(面向接口编程),对方法前后拦截,在某个方法上执行前或直接加入一个事务
执行完目标方法后,根据执行情况提交或是回滚
事务特性:原子性 一致性 隔离性 持久性

传播机制:事务的嵌套
	PROPAGATION_REQUIRED spring默认 
	PROPAGATION_REQUES_NEW
	PROPAGATION_SUPPORT
	PROPAGATION_NOT_SUPPORT
	PROPAGATION_NEVER
	PROPAGATION_MANDATORY
	PROPAGATION_NESTED
隔离机制:一个事务可能受其他并发事务活动的影像程度,分为三种
	脏读:发生一个事务读取啦另个事务修改尚未提交的数据时。数据回滚,第一次读取的数据无效
	不可重复读 :重点在修改,同一个数据
		同一个事务执行相同的查询两次以上,但每次查询结果不同。由于另一个并发事务在两次查询之间更新啦数据
	幻读:重点在新增或删除,不同数据
	
	理想状态下,事务之间完全隔离
	隔离级别
		ISOLATION_DEFAULT			后端数据库默认使用
		ISOLATION_READ_UNCOMMITTED	允许读取尚未提交的更改,可能导致脏读 幻读 不可重复度
		ISOLATION_READ_COMMITTED	oracle 默认级别 允许从已经提交的并发事务读取,防止脏读,其他可能会出现
		ISOLATION_REPEATABLE_READ	mysql默认级别 相同字段多次读取其结果一致,除非数据被当前事务本身改变,防止脏读,不可重复读,但幻读仍然发生
		ISOLATION_SERIALIZABLE		完全服从ACID的隔离级别,
			不发生 脏读,不可重复读,幻读,效率慢,因其完全锁定当前事务相关数据表。
只读 PROPAGATION_REQUIRES_NEW、PROPAGATION_REQUIRED、 ROPAGATION_NESTED
	
事务超时 PROPAGATION_REQUIRES_NEW、PROPAGATION_REQUIRED、ROPAGATION_NESTED
回滚原则 
	在默认设置下,事务只在出现运行时异常(runtime exception)时回滚,而在出现受检查异常(checked exception)时不回滚(这一行为和EJB中的回滚行为是一致的)。

不过,可以声明在出现特定受检查异常时像运行时异常一样回滚。同样,也可以声明一个事务在出现特定的异常时不回滚,即使特定的异常是运行时异常。

Spring声明式事务配置参考
	
	1.事务传播性:@Transaction(propagation=Propagation.REQUIRE)
	2.事务隔离级别:@Transaction(Isolation.READ_UNCOMMITTED)
			 读取未提交数据(会出现脏读,不可重复读)基本不使用
	
	3.只读:@Transaction(readOnly=true)
	4.事务的超时性@Transaction(timeout=30)
	5.回滚
		指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)
		指定多个异常类: @Transactional(rollbackFor={RuntimeException.class,Exception.class})
	    该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。

标签:回滚,String,ISOLATION,事务,PROPAGATION,脏读,异常
来源: https://www.cnblogs.com/hhnature/p/14791189.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有