首页 > 编程语言 > 详细

spring 事务管理

时间:2020-08-26 13:56:05      阅读:72      评论:0      收藏:0      [点我收藏+]
spring事务控制
 
事务特性:
  • 原子性:事务应该当作一个单独单元的操作,这意味着整个序列操作要么是成功,要么是失败的。
  • 一致性:这表示数据库的引用完整性的一致性,表中唯一的主键等。
  • 隔离性:可能同时处理很多有相同的数据集的事务,每个事务应该与其他事务隔离,以防止数据损坏。
  • 持久性:一个事务一旦完成全部操作后,这个事务的结果必须是永久性的,不能因系统故障而从数据库中删除。
事务管理包括编程式事务管理和声明式事务管理, 声明式事务管理作为一种横切关注点,声明式事务管理可以使用 AOP 方法进行模块化。Spring 支持使用 Spring AOP 框架的声明式事务管理。
编程式事务管理:复杂不建议使用。
声明式事务:目标方法会在 try / catch 块中执行。如果方法正常结束,AOP 建议会成功的提交事务,否则它执行回滚操作。
步骤1:在spring配置文件中配值bean,开启注解配置
     <!-- 配置spring事务控制器 -->
     <bean id="dstm" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     <property name="dataSource" ref="dbcp"/>
</bean>
     <!-- 开启事物注解配置@tansactional -->
     <tx:annotation-driven transaction-manager="dstm"/>
另外:如果不使用xml方式配置,在配置类上加入
@Configuration
@EnableTransactionManagement  //开启事务注解
public class SpringTxConfiguration {
//里面配置数据源,配置配置事务管理器。
}
在需要事物控制的类上或者和方法前加上@Transactional,  @Transactional 注解应该只被应用到 public 方法上方法优于类,spring在调用有注解的方法时,如果遇到异常就会回滚事物,如果没有就正常执行,常写在service中
@Transactional()中可以有一些属性值
 
readOnly (默认false)
select的时候可以写readOnly=true,表示事务只读数据库
 
rollbackFor:(默认runtimeexcepton.class和error )
可以指定遇到什么异常回滚,xx.class,追加,原来的runtime也回滚
noRollbackFor:遇到那种异常不回滚
 
propagation 一个事务方法调用另一个事务方法的传播,常用如下,还有其他事务类型
默认REQUIRED,在当前事务中运行 a方法调用b方法,a新启一个事务,运行到b方法,b也是一个事务,所以b就在a的事务里运行。
REQUIRED_NEW 当前方法新启事务,有事务在运行,挂起运行的事务,a方法调用b,a新启事务,遇到b方法,a事务挂起,b新启事务,b事务结束,然后a事务开启,直至结束。
 
isolation(默认DEFAULT,根据数据库能力自己选择)
事务隔离,一个应用程序对同一个数据集操作,并发时产生一些问题
* 并发事务所导致的问题可以分为下面三种类型:
    * 脏读: 对于两个事物 T1, T2, T1  读取了已经被 T2 更新但 还没有被提交的字段. 之后, 若 T2 回滚, T1读取的内容就是临时且无效的.
    * 不可重复读:对于两个事物 T1, T2, T1  读取了一个字段, 然后 T2 更新了该字段. 之后, T1再次读取同一个字段, 值就不同了.
    * 幻读:对于两个事物 T1, T2, T1  从一个表中读取了一个字段, 然后 T2 在该表中插入了一些新的行. 之后, 如果 T1 再次读取同一个表, 就会多出几行.
READ_UNCOMMITED   读未提交,不能解决前三个问题
READ_COMMITED    只允许读取被其他事务提交更改的字段,能解决脏读问题
REPEATABLE_READ  确保事务多次读书字段是同一个值,能解决脏读、不可重复读问题
SERIALIZABLE  确保事务操作的时候,整个表不能被其他事务操作增删改,其他事务可以查询,解决所有问题,但效率低
DEFAULT   默认,大多数数据库默认READ_COMMITED    
隔离级别以次增加,安全性增强,并发处理降低,时不同数据库底层处理的

spring 事务管理

原文:https://www.cnblogs.com/zhouyanger/p/13564444.html

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