学习spring事务进行的总结1

很长时间没有写了,也没能管住自己,希望写下这篇文章可用督促自己是可不要忘记学习。

话不多说,开始对spring事务进行个人总结。

首先,先了解下什么是事务?

事务就是逻辑上的一系列操作,要么全部成功,要么全部不成功。 

事务有一些特性,叫做acid,分别是原子性,一致性,持久性,隔离性。

下面分别解释下四个特性,原子性,指的是事务中的操作属于一个单位,要么操作全部发生,要么全部不发生。

一致性,表示事务前后数据的完整性必须一致。

持久性,一个事务一旦被提交,他对数据库中的数据操作是永久的,即使数据库发生异常也不会呗影响。

隔离性,多个用户并发访问数据库时,一个用户的事务不被另外一个人的事务打扰,多个并发事务之间互不影响。

在了解了什么是事务和事务的特性后,那么便会需要事务,如果没有事务的隔离性的话,有多个用户并发进行时,数据库中的数据就会被干扰。此时就产生了读问题。读问题共有三个,分别是脏读,不可重复读,幻读。

   脏读,指的是一个事务读取到了另外一个事务修改但还未提交的数据,若事务回滚,则读到的数据是无效的。

  不可重复读,指的是多次读取同一个数据,返回的结果不一样。

  幻读,指一个事务读取到了另一个事务插入的数据,导致前后读取不同

既然产生了这些问题 ,就需要对其进行解决,可用通过设置事务的隔离级别来避免这些问题,

有五个隔离级别,分别是default,READ_UNCOMMITED,READ_COMMITED,REPEATABLE COMMITED,SERIALIZABLE。

default指的是底层数据库所使用的隔离级别,如mysql使用的是REPEATABLE COMMITED,oracle数据库使用的是read_commited。

default也是spring选择用的隔离级别。

read_uncommited允许读取未提交而修改的的数据,可产生脏读,不可重复读,幻读。

read_commited允许在并发事务提交后读取,可防止脏读,但不可重复读和幻读仍有可能发生。

repeatable  read对相同字段的多次读取是一致的,除非数据被事务改变,可以防止脏读,不可重复读,但幻读仍有可能发生。

serializable 完全服从acid的隔离级别,确保不发生脏读,不可重复读,幻读,这在所有的隔离级别中是最慢的。是典型通过完全锁定在事务中涉及的数据表而完成的。

mysql中:
查看当前事务的隔离级别;
select @@TX_ISOLATION;
更改当前事务的隔离级别:SET TRANSACTION ISOLATION LEVEL 四个级别之一。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值