首页 > 其他 > 详细

String事务

时间:2021-05-20 22:27:45      阅读:13      评论:0      收藏:0      [点我收藏+]

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})
	    该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。

学习参考: https://www.cnblogs.com/mseddl/p/11577846.html

String事务

原文:https://www.cnblogs.com/hhnature/p/14791189.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!