Spring事务管理方式

2020-12-26 16:29

阅读:707

标签:get   nes   添加   save   code   文件中   ever   情况下   默认   

如果不配置spring的事务,那么默认每次执行dao层方法即自动提交事务。

 
    "transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        
        "dataSource" ref="dataSource"/>
    "txAdvice" transaction-manager="transactionManager">
        "save*" propagation="REQUIRED"  isolation="READ_COMMITTED" />
            "insert*" propagation="REQUIRED" isolation="SERIALIZABLE"/>
            "update*" propagation="REQUIRED" />
            "delete*" propagation="REQUIRED" />
            
            "find*" propagation="REQUIRED" read-only="true" />
            "get*" propagation="REQUIRED" read-only="true" />
            "select*" propagation="REQUIRED" read-only="true" />
        

Spring事务管理方式有两种

1)    编程式事务:以java编码的方式来实现事务的管理。基本不使用。

2)    声明式事务:只需要申明配置事务的处理方式,spring会自动进行事务管理。

a.        事务管理器

b.       事务的传播特性:事务的传播特性用来定义事务中又存在事务的情况下,该如何来处理事务。(Service层方法调用service层方法时)

a)       Required:必须,必须有一个事务,如果没有,则会开启一个事务。如果有,则使用当前事务。(默认)

b)       Requireds_new:(需要自己的新的事务) 必须运行在自己的事务中,即使当前方法存在一个事务,也会新建一个自己的事务。执行本身事务时,会将外部事务挂起。

c)        Nested:(嵌套)可以多个事务嵌套在一起,内部事务不会影响外部事务,外部事务回滚,会影响到内部事务回滚。

d)       Mandtory: (必须有事务)要求必须有事务,没有事务就抛出异常。

e)       Never:(永不) 不支持事务,有事务就抛出异常。

f)        Supports:(支持) 如果 有事务和没有事务都支持。

g)       not_supported :(不支持事务),有事务存在,便不运行,直到事务提交后再执行。

c.        事务的隔离级别:

a)       READ_UNCOMMITTED:读未提交

b)       READ_COMMITTED:读已提交

c)        REPEATABLE_READ:可重复读

d)       SERIALIZABLE:串行化

e)       DEFAULT:按照数据库默认的隔离级别。(默认)

d.       事务AOP,将事务切入到对应的方法。

e.        以注解的形式配置

a)       在spring的配置文件中配置启用事务注解

tx:annotation-driven/>

 

b)       在需要事务处理的类或方法上面添加事务注解

  @Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.READ_COMMITTED)

Spring事务管理方式

标签:get   nes   添加   save   code   文件中   ever   情况下   默认   

原文地址:https://www.cnblogs.com/xie-qi/p/13034627.html


评论


亲,登录后才可以留言!