Spring学习笔记-声明式事务

时间:2021-08-13
本文章向大家介绍Spring学习笔记-声明式事务,主要包括Spring学习笔记-声明式事务使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

回顾事务

  • 将一组业务当成一个业务来做:要么都成功,要么都失败
  • 在项目开发中十分重要(涉及数据一致性!!!)
  • 保证完整性和一致性

【面试问题点】

  • 事务ACID原则
    • 原子性
    • 一致性
    • 隔离性:多个业务可能操作同一个资源,防止数据损坏
    • 持久性:事务一旦提交,无论系统发生什么问题都不会影响数据,数据被持久化写入存储器中

Spring中的事务管理

声明式事务(AOP)

  • spring-mapper.xml
<!--结合AOP实现事务织入-->
    <!--配置事务通知-->
    <tx:advice id="txADVICE" transaction-manager="transactionManager">
        <!--给指定方法配置事务-->
        <!--配置事务传播特性:
             【知识点】
             【默认】propagation="REQUIRED"
        -->
        <tx:attributes>
            <tx:method name="add" propagation="REQUIRED"/>
            <tx:method name="del" propagation="REQUIRED"/>
            <tx:method name="update" propagation="REQUIRED"/>
            <tx:method name="select" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <aop:pointcut id="txPointCut" expression="execution(* cn.iris.mapper.*.*(..))"/>
        <aop:advisor advice-ref="txADVICE" pointcut-ref="txPointCut"/>
    </aop:config>
  • 测试
@Test
public void trasactionTest() {
    addUser();
    selectUser();
    delUser();
    selectUser();
}

面试点】-- 传播方式&隔离级别

【编程式事务】

为什么需要事务

  • 如果不配置事务,可能存在数据提交不一致的情况;
  • 如果不在Spring中配置声明式事务则需要在代码中手动配置事务
  • 项目开发中,事务涉及到数据的一致性和完整性,不容马虎

原文地址:https://www.cnblogs.com/irispassionguy/p/ssm_spring_transaction.html