【无标题】

Spring-day3

事务

在学习事务的过程中,我了解到了事务的四大特性,事务操作时会产生的数据库数据异常和解决异常的方法*。

事务是访问并可能更新数据库中各项数据项的一个程序执行单元,一个事务中的操作只能全部完成,不然会撤销更改。

事务有原子性、隔离性、一致性和持久性四个特性:

1.原子性就是指事务是数据库操作的最小单元,并且所有的操作只能同时成功或者同时失败,不会存在中间状态。
2.隔离性是指的是事务之间相互独立,互不干扰。
3.一致性是指事务进行操作前后数据库中的数据应该保持一致,例如转账前后,两个账户中的余额总数应该保持一致。
4.持久性是指事务提交后对数据库的更改是永久、无法撤销。

在事务操作时会出现的异常:

1.脏读:脏读是指一个事务读取了另外一个未能正常提交的事务中的数据。
2.不可重复读:是指一个事务在同一范围内多次查询却返回了不同的数据值,一般是查询时有其他事务进行了更新操作引起的。
3.幻读:幻读是指在一个事务进行删除或者插入操作时,另一个事务多次查询到的数据总数结果不一致。
解决方法:对事物进行隔离

隔离级别:

1.读未提交:一个事务在进行写数据时,另一个事务无法同时写,但可以同时读。此方法允许脏读,幻读和不可重复读。
2授权读取:事务在读数据时允许其他数据访问,但是未提交的写数据不允许其他事务访问。不允许脏读
3.可重复读取:事务在进行读取数据时无法写数据,在写数据时无法进行其他操作。只允许幻读
4.序列化:事务只能依次执行。

在Spring中进行事务处理

在练习基于Java和Spring底层的事务处理时,能够通过测试并回滚事务,但是在使用xml和注解时,未通过测试并且未找到明显bug。

事务处理可以使用底层API和基于AOP两种方式实现。
1.使用底层API时,需要创建对应的对象来实现或者调用对相应的方法,并且使用try catch语句来提交或者回滚事务。
2.基于AOP时:可以使用xml,在xml中需要设置切入点和对应的增强。还可以通过@Transactional注解来实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值