面试题-spring事务1

1、spring和事务的关系
  • spring和事务是管理关系。
2、spring事务三要素
  • 数据源:表示具体的事务性资源,是事务的真正处理者,如MySql。
  • 事务管理器:从整体上管理事务,如打开、提交、回滚。
  • 事务应用和属性配置:标识符,表明要参与事务的方法;如何参与事务,以及一些相关属性如隔离级别、超时时间。
3、spring事务的注解的本质
  • @Transactional这个注解具有两方面的功能,一是表明该方法要参与事务,二是配置相关属性来定制事务的参与方式和运行行为。
4、spring声明式事务实现原理

声明式事务主要得益于spring aop。使用一个事务拦截器,在方法调用的前后/周围进行事务性增强(advice),来驱动事务完成。

5、如何回滚一个事务

事务上下文中当前正在执行的代码会抛出一个异常,事务基础设施会捕获任何未处理的异常,标记并回滚。

6、事务在类上的继承性

@Transactional注解的作用可以传播到子类,如果父类表了子类就不用标记了。

7、只在public方法上生效?

当采用代理来实现事务时,@Transactional注解只能应用在public上。

8、事务与线程

spring事务与一个线程的执行相关联,底层是一个ThreadLocal>,就是每个线程一个map。key是DataSource,value是Connection。

9、脏读

一个事物修改了一行数据但是没有提交,第二个事务可以读到这行被修改的数据;若第一个事务回滚,第二个事务的数值是无效的。

10、不可重复度

一个事物读取了一行数据,第二个事务修改了这条数据;第一个事务重新读取这行数据会获得不同的值。

11、幻读

一个事务按照一个where条件读取所有符合的数据行,第二个事务插入了一行数据并恰好也满足这个where条件,第一个事务再以这个where条件重新读取,将会额外多出来一行。

你可能感兴趣的:(面试题,java,事务,spring)