spring事务管理一:关于事务管理的接口

本文介绍了Spring框架中的事务管理机制,主要包括三个核心接口:PlatformTransactionManager、TransactionDefinition和TransactionStatus。详细解析了事务隔离级别的五种类型及其作用,以及事务传播行为的七种模式。此外还介绍了如何获取事务的超时时间和只读属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

spring事务管理主要有三个接口:

  1. 事务管理器接口:PlatformTransactionManager。可以为不同的框架提供不同的实现,包括Spring JDBC、iBatis、Hibernate(有版本限制,3.0以上,spring版本更高时需要更高版本)、JPA、Jdo、JTA
  2. 事务定义接口:TransactionDefinition。包括设置隔离级别(ISOLATION)、传播行为(PROPAGATION)、超时信息(TIMEOUT)、只读参数(READONLY)。
  3. 事务状态接口:TransactionStatus。获取事务具体的状态。

 详细:

关于事务隔离级别,有5种。分别是:

  • ISOLATION_DEFAULT,默认隔离级别,也就是根据数据的默认隔离级别,不同的数据库的隔离级别也不尽相同。
  • ISOLATION_READ_UNCOMMITTED,级别最低的隔离级别。允许读取其他还未提交但已改变的数据,可导致脏读、幻读、不可重复读等异常
  • ISOLATION_READ_COMMITTED,提交隔离级别。允许读取其他已经提交的数据,可防止脏读,但可能出现幻读、不可重复读
  • ISOLATION_REPEATABLE_READ,更高级别的隔离。对相同字段的多次读取是一致的,可防止脏读、不可重复读,但可能出现幻读
  • ISOLATION_SERIALIZABLE,级别最高的隔离。采用锁的方式进行事务操作,可以防止脏读、幻读、不可重复读,但随之而来的付出的时间和性能代价也更大

关于事务传播行为,事务传播行为主要是用来解决业务层对事务的调用问题,有7种。分别是:

  • PROPAGATION_REQUIRED,默认的传播行为,当前如果有事务,Spring就会使用该事务,否则会开始一个新事务
  • PROPAGATION_SUPPORTS,如果当前有事务则使用,没有也不会开始新事务
  • PROPAGATION_MANDATORY,如果当前有事务则使用,没有则会抛出异常
  • PROPAGATION_REQUIRES_NEW,总是会开启新事务,如果当前已经有事务存在会将原有的事务挂起
  • PROPAGATION_NOT_SUPPORTED,以非事务形式运行行为,如果当前已经有事务存在则挂起该事务
  • PROPAGATION_NEVER,以非事务形式运行行为,如果当前已经有事务存在则抛出异常
  • PROPAGATION_NESTED,如果当前有事务存在,则嵌套在该事务下执行;没有则会开启新事务

事务超时时间则是以getTimeout()方法获取,单位为秒(s);是否只读则通过isReadOnly()方法获取。

关于TransactionStatus接口的操作主要有三个,分别是isNewTransaction() 是否是新事务、isRollbackOnly()是否是只回滚事务,还有一个最重要的方法setRollbackOnly(),这个方法将事务设置为只允许回滚操作,即事务在任何操作下都是最终执行回滚。

 

转载于:https://my.oschina.net/u/2428684/blog/686034

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值