Spring——声明式事务

spring中的事务管理

  • 声明式事务:AOP(交由容器管理事务)

  • 编程式事务:需要在代码中,进行事务的管理

Spring中七种Propagation类的事务属性:

  • REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

  • SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

  • MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。

  • REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

  • NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

  • NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

  • NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。

 

配置:

 <!--结合aop实现事务的织入-->
 <!--配置事务通知-->
 <tx:advice id="txAdvice" transaction-manager="transactionManager">
     <!--给哪些方法配置事务-->
     <!--配置事务的传播特性-->
     <tx:attributes>
         <tx:method name="addUser" propagation="REQUIRED"/>
         <tx:method name="deleteUser" propagation="REQUIRED"/>
         <tx:method name="selectUser"/>
         <!--<tx:method name="update"/>-->
         <!--<tx:method name="*"/>-->
     </tx:attributes>
 </tx:advice>
 
 <!--配置事务切入-->
 <aop:config>
     <aop:pointcut id="txPointCut" expression="execution(* com.yl.mapper.*.*(..))"/>
     <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
 </aop:config>

为什么需要事务:

  • 如果不配置事务,可能存在数据提交不一致的情况

  • 如果我们不去配置声明式事务,就需要在代码中手动配置事务

  • 事务在项目的开发中十分重要,涉及到数据的一致性和完整性问题,不容马虎

posted @ 2020-09-04 15:00  Fabulo  阅读(125)  评论(0)    收藏  举报