美文网首页java面试java面试
5.1简介-第5章Spring事务

5.1简介-第5章Spring事务

作者: 努力学习的lfk | 来源:发表于2021-08-23 08:47 被阅读0次

spring的事务处理

1.什么是事务:
事务时一组sql语句的集合,集合中有多条sql语句(insert、update、select、delete)。我们希望这些sql语句都能成功,或者都能失败。这些sql语句的执行是一致的,作为一个整体执行。

2.什么时候使用事务:
当操作涉及到多个表或者多个sql语句(insert、update、select、delete),需要保证这些语句都成功(或都失败)时。

在java代码中,事务应放在哪?
放在service接口的实现类的业务方法上(因为该业务方法可能会涉及到多个dao的调用)。

3.通常使用jdbc访问数据库,还有mybatis访问数据库,如何处理事务?
jdbc访问数据库:
Connection conn;
conn.commit();
conn.rollback();

mybatis访问数据库:
SqlSession.commit();
SqlSession.rollback();

hibernate访问数据库:
Session.commit();
Session.rollback();

4.第3问中事务的处理方式,有哪些不足之处?
1)不同的数据库访问技术,处理事务的对象方法不同。需要去了解不同数据库访问技术使用事务的原理。
2)掌握多种数据库中事务的处理逻辑(什么时候提交、回滚事务)。
3)需要了解处理事务的多种方法
总结:多种数据库的访问技术有不同的事务处理机制、对象、方法。

5.如何解决不足。
spring提供了一种处理事务的统一模型,能使用统一步骤(方式)来完成多种不同数据库访问技术的事务处理。


(声明式事务:把事务相关资源和内容提供给spring,spring就能处理事务、提交回滚。几乎不用写代码)

6.处理事务,需要做什么,以及怎么做。
spring处理事务的模式,其使用步骤都是固定的:
1)使用事务管理器对象,代替完成commit、rollback。
事务管理器是PlatformTransactionManager接口对象。其主要用于完成事务的提交、回滚,及获取事务的状态信息。

实现类:spring把每一种数据库访问计数对应的事务处理类都创建好了。
如:
mybatis访问数据库——spring创建了DataSourceTransactionManager
hibernate访问数据库——spring创建的是HibernateTransactionManager

如何使用:需要声明数据库访问计数对应的事务管理器实现类,即在spring的配置文件中使用<bean>声明。
例如:使用mybatis数据库,应在配置文件中
<bean id="自定义" class="...DataSourceTransactionManager">

2)说明需要事务的类型
事务定义接口TransactionDefinition中定义了事务描述相关的三类常量:事务隔离级别、事务传播行为、事务默认超时时限,及对它们的操作。

①事务的五个隔离级别
这些常量均是以ISOLATION_开头。即形如ISOLATION_×××。

  • DEFAULT:采用DB默认的事务隔离级别。MySQL默认为REPEATABLE_READ;Oracle默认为READ_COMMITED。
  • READ_UNCOMMITTED:读未提交。未解决任何并发问题。
  • READ_COMMITED:读已提交。解决藏独,存在不可重复读与幻读。
  • REPEATABLE_READ:可重复度。解决藏独、不可重复读,存在幻读。
  • SERLALIZABLE:串行化。不存在并发问题,最高的事务隔离级别,不管多少事务,挨个运行完一个事务的。

②事务的七个传播行为
所谓事务传播行为是指,处于不同事务中的方法在相互调用时,执行期间事务的维护情况。如:A事务中的方法doSome()调用B事务中的方法doOther(),在调用执行期间事务的维护情况,就成为事务传播行为。事务传播行为是加在方法上的。
事务传播行为常量都是以PROPAGATION_开头,形如PROPAGATION_×××。

PROPAGATION_REQUIRED(掌握)
指定的方法必须在事务内执行。若当前存在事务就加入到当前事务中;若当前没有事务,则创建一个新事物。这种传播行为是最常见的选择,也是sprig默认的事务传播行为。

PROPAGATION_REQUIRES_NEW(掌握)
总是新建一个事务,若当前存在事务,就将当前事务挂起,直到新事务执行完毕。

PROPAGATION_SUPPORTS(掌握)
指定的方法支持当前事务,但若当前没有事务,也可以以非事务方式执行(查询操作,有无事务都可)。

PROPAGATION_MANDATORY
PROPAGATION_NESTED
PROPAGATION_NEVER
PROPAGATION_NOT_SUPPORTED

③事务默认超时时限
表示一个方法最长的执行时间,如果方法执行时超过了时间,事务就回滚。单位秒,整数值,默认-1.

3)事务提交事务、回滚事务的时机
①当业务方法执行成功,无异常抛出,spring会在方法执行完毕后自动提交事务(调用事务管理器的commit)。

②当业务方法抛出运行时异常或ERROR,spring自动执行回滚(调用事务管理器的rollback)。
运行时异常的定义:RuntimeException和它的子类都是运行时异常,例如NullPointException、NumberFormatExcept。

③当业务方法抛出非运行时异常(主要是受查异常时),提交事务。
受查异常的定义:在写代码时,必须处理的异常。例如IOException、SQLException。

总结spring的事务

1.管理事务的是 事务管理器和其实现类
2.spring的事务是一个统一模型
1)使用<bean>指定使用的事务管理器实现类
2)指定哪些类、哪些方法需要加入事务的功能
3)指定方法需要的隔离级别、传播行为、超时时限


笔记来源:B站动力节点 spring学习视频

视频链接:https://www.bilibili.com/video/BV1nz4y1d7uy

相关文章

  • 5.1简介-第5章Spring事务

    spring的事务处理 1.什么是事务:事务时一组sql语句的集合,集合中有多条sql语句(insert、upda...

  • Spring 事务实现分析

    1. Spring 事务简介 Spring 本身并不实现事务,Spring事务 的本质 还是 底层数据库 对事务的...

  • Spring源码解读(三)事务

    一、spring事务简介 spring中有两种事务实现方式: 1)编程式事务使用TransactionTempla...

  • Spring 事务简介

    本文介绍了Spring 事务的相关知识。内容仅供参考使用,有不足之处请及时指出,也欢迎大家交流探讨。 事务概述 事...

  • Spring事务简介

    事务的传播行为 Spring事务有7种传播行为: PROPAGATION_REQUIRED 支持当前事务,如果当前...

  • Spring 事务简介

    事务 事务及数据库事务,是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 ACID特性 ...

  • [spring] 事务简介

    什么是事务 一个事务是有下列属性的一个工作单元: 原子性(ATOMICITY):一个事务要被完全的无二义性的做完或...

  • 19、Spring-事务机制-使用

    一、简介 Spring事务管理分为编程式事务管理和声明式事务管理两种, 声明式事务管理:底层是建立在Spring ...

  • Spring 事务管理

    Spring 事务管理 一、Java 事务导引 事务简介: 1. 什么是事务 事务是正确执行一系列的操作(或动作)...

  • 2022-07-22 Springcloud基础知识(15)-

    Spring Cloud Alibaba Seata (一) | Seata 简介、事务模式、Seata Serv...

网友评论

    本文标题:5.1简介-第5章Spring事务

    本文链接:https://www.haomeiwen.com/subject/tmjxvltx.html