SSM之Spring中的事务控制事务控制是啥?有什么作用?都有哪些事务控制方式

SSM之Spring中的事务控制事务控制是啥?有什么作用?都有哪些事务控制方式,第1张

SSM之Spring中的事务控制/事务控制是啥?有什么作用?都有哪些事务控制方式

写在前面:
接着记录自己的Spring学习之旅,若看不懂则建议先看前几篇博文,详细代码可在我的Gitee仓库ssm-learning克隆下载学习使用!

1.11 事务控制 1.11.1 编程式事务控制相关对象 1.11.1.1 PlatformTransactionManager

接口类型,是事务管理器,主要有以下方法

方法说明TransactionStatusgetTransaction(TransactionDefinition definition)获取事务的状态信息void commit(TransactionStatus status)提交事务void rollback(TransactionStatus status)回滚事务

注:
这是接口类型,不同的Dao层技术则有不同的实现类,例如:Dao层技术是jdbc或是Mybatis时,org.springframework.jdbc.DataSourceTransactionManager;Dao层技术是Mybatis时,org.springframework.orm.hibernate5.HibernateTransactionManager。

1.11.1.2 TransactionDefinition 1.11.1.2.1 事务隔离级别

设置隔离级别,可以解决事务并发产生的问题,如脏读(读取未提交数据)、不可重复读和虚读(又称幻读,即前后多次读取,数据总量不一致)。
隔离级别主要有以下:

  • ISOLATION-DEFAULT,默认
  • ISOLATION_READ_UNCOMMITED,可读但不可提交
  • ISOLATION_READ_COMMITED,可读已提交
  • ISOLATION_REPEATABLE_READ,可重复读
  • ISOLATION_SERIALIZABLE,序列化
1.11.1.2.2 事务传播行为

解决调用业务方法时之间事务统一性问题。不需要详细记住,有印象即可,主要分为以下几种:

  • REQUIRED:若当前无事务,就新建一个事务,若已存在事务,就加入到其中,默认选择
  • SUPPORTS:支持当前事务,若当前没有事务就以非事务方式执行;
  • MANDATORY:使用当前事务,若没有就抛出异常;
  • REQUERS_NEW:新建事务,若在当前事务中就挂起它;
  • NOT_SUPPORTED:以非事务方式运行,若在当前事务中就挂起它;
  • NEVER:以非事务方式运行,若没有就抛出异常;
  • NESTED:若当前事务存在,则在嵌套事务中运行,否则执行REQUIRED *** 作;
  • 超时时间:默认为-1,没有超时限制,若以秒为单位;
  • 是否只读:建议查询时设置只读;
1.11.1.3 TransactionStatus

这是接口提供的事务具体的运行状态,方法如下:

方法说明boolean hasSavePoint()是否存储回滚点boolean isCompleted()事务是否完成boolean isNewTtransacton()是否是新事物oolean isRollbackonly()事务是否回滚 1.11.2 声明式事务控制 1.11. 2.1 声明式事务控制介绍

在Spring容器中就是使用声明的方式来进行事务控制,而声明则是在配置文件中进行声明,让配置文件中的事务处理来代替代码中的事务处理!
作用:

  • 事务管理不侵入开发的组件。说白了就是解耦,AOP的思想。
  • 维护方便。在不需要事务管理的时候只需更改设定文件即可移除事务管理服务而无需再更改代码重新编译。

注意:
声明式事务控制底层就是AOP

1.11. 2.2 基于XML的声明式事务控制 1.11.2.2.1 明确事项 1.11.2.2.2 切点方法的事务参数的配置

一般在applicationContext文件中配置,代码如下:

  
   
  
	   
	  
		   
	   
 

其中,tx:method/代表切点方法的事务参数配置,例如:


注:

  • name。切点方法名称
  • isolation。事务隔离级别
  • propogatoin。事务传播行为
  • timeout。超时时间
  • read-only。是否为只读
1.11. 2.3 基于注解的声明式事务控制 1.11.2.3.1 注解

使用@Transactional来进行 *** 作,在需要进行事务控制的类或方法进行配置修饰,其可用的属性同xml配置,如隔离级别等。

1.11.2.3.2 注意事项
  • 注解在类上,那么该类中所有方法都将使用同一套事务控制注解参数配置
  • 不同方法可以使用不同的事务参数配置
  • 使用注解必须开启注解驱动,

代码实战将在下一篇博客发布!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5596685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存