【Spring】Spring事务

一.Spring事务

配置方式

项目通过声明式事务中的拦截器方法实现事务管理。

首先配置TransactionIntercepter,包括他的属性TransactionManager(HibernateTransactionManager),以及事务属性:传播属性与只读,通过transactionAttribute指定

然后利用BeanNameAutoProxyCreator,是一个根据bean名生成自动代理的代理创建器,指定beanName与拦截器,实现将事务动态织入指定bean的功能。

Spring事务管理关键抽象

包括三个部分:事务管理器、事务属性以及事务状态(运行时的状态)

1)事务管理器PlatformTransactionManager:管理事务提交或回滚(!就只有这俩主要功能)

a.接口方法:getTransaction(TransactionDefinition definition)

commit(TransactionStatus status):根据事务状态提交事务

rollback(TransactionStatus status):若提交时抛出异常,将隐式回滚

2)事务属性TransactionDefinition:用于描述事务的隔离级别、超时时间、是否为只读事务和事务传播规则等控制事务具体行为的事务属性

a.事务隔离:四中隔离级别,默认与底层数据库的一致(Oracle 读已提交,Mysql 可重复读)

b.事务传播:当有事务嵌套发生时,我们需要用设置传播行为控制当前事务如何传播到被嵌套的方法中去。

Propagation_required:当前如果没有事务,则新建。如果有事务,则加入这个事务中(最常用)

Propagation_support:支持当前事务,当前如果没有事务,则以非事务方式运行

Propagation_mandatory:使用当前事务,若无则抛出异常

Propagation_required_new:新建事务,若有,则挂起

Propagation_never:非事务方式,若有,抛出异常

Propagation_not_support:非事务方式,若有,则挂起

Propagation_nested:若存在,在被嵌套事务中执行,若无,则加入(与父事务相依 有savepoint)

c.事务超时:TIMEOUT_DEFAULT:事务运行多久苏安超市。超市后事务将会回滚。

d.只读状态:设置为只读事务,该事务不能修改任何数据。

3)事务状态TransactionStatus:代表一个事务的具体运行状态

事务管理器通过该接口可以:a.获取一个事物的运行状态

b.间接的回滚事务(更具有可控性)

c.继承自SavePointManager接口,具有分段事务控制能力。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 很多人喜欢这篇文章,特此同步过来 由浅入深谈论spring事务 前言 这篇其实也要归纳到《常识》系列中,但这重点又...
    码农戏码阅读 10,202评论 2 59
  • 事务有四个特性:ACID 原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作...
    jiangmo阅读 4,963评论 0 7
  • Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,...
    EnigmaXXX阅读 3,828评论 0 0
  • spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate...
    熊熊要更努力阅读 1,709评论 0 0
  • 事务接口定义 在Spring中,事务是通过TransactionDefinition接口定义的。其中定义了访问事务...
    追梦人Plus阅读 4,829评论 0 12