sptring事务

一、事务定义是做什么用的?

告诉管理者需要对业务进行什么事务框架

二、事务定义的几种方式?可以定义些什么?

  1. xml2、注解方式。@Transactional

定义只读,传播行为,发生异常回滚,超时回滚

三、隔离级别:

事务隔离级别,即事务工作之间的隔离程度,数据之间的可互访性

参考来源:https://www.cnblogs.com/WJ-163/p/6023054.html

Read uncommitted<Read committed<Repeatable read<Serializable

https://i-blog.csdnimg.cn/blog_migrate/81ca86a0919797485d624ce92b8c45ac.png

. ISOLATION_READ_UNCOMMITTED这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。
      这种隔离级别会产生脏读,不可重复读和幻像读。
ISOLATION_READ_COMMITTED保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据
ISOLATION_REPEATABLE_READ这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。
      它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)
ISOLATION_SERIALIZABLE这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。
      除了防止脏读,不可重复读外,还避免了幻像读。 

 

四、7种传播行为

1、PROPAGATION_REQUIRED:当前有事务加入事务,否则创建一个新的事务。该设置是最常用的设置。

2、PROPAGATION_SUPPORTS:支持当前事务,有事务加入没有则非事务运行

3、PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。

4、PROPAGATION_REQUIRES_NEW:无论当前存不存在事务,都创建新事务。

5、PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

6、PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

7、PROPAGATION_NESTED:若当前存在事务,嵌套事务。如果当前没有,则执行与PROPAGATION_REQUIRED类似的操作

五、其他

1.事务切面可以定义在那些层?

 定义在Service层

2.TransactionManager会有很多种吗?

事务管理器可能会有多种:jdbc,mybatis、hibernate、jpa

3.什么是本地事务?什么是分布式事务?

本地事务就是数据库事务,只有一个数据源时,即本地事务,多个数据源即是分布式事务

4.各种方式的事务逻辑是一样的吗?

不是,是有区别的。

5.我们在代码中应用事务管理的方式是统一的吗?

是spring里的方式是统一的,管理控制一样,xml和注解方式的区别是实现类Bean不一样

6.架构spring事务管理建模

单一数据源:

分布式事务:

7.如何让事务应用者(框架使用者)对这些变化透明?

答:抽象,面向接口编程,策略模式。 PlatformTransationManager。

8.如何表示用户的事务定义?

答:TransationDefinition

9.如何表示开启的事务?

答:TransationStatus。

读数据源事务管理的源码时,需要验证三点:1、是否把连接放到了线程上下文,3是否是同一个连接,3、查看事务的传播

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值