一步迅速了解 Spring 中的事务管理

一,什么是Spring事务管理

  1,什么是事务管理

        事务管理本质上是数据库提供的一种管理机制

        

  2,Spring事务管理

       Spring 事务管理就是 spring 框架针对程序中提交事务这部分非业务代码进 行分离管理,减轻程序员负担.在程序执行没有问题时,提交事务,出现问题时,回滚 事务.

        spring框架对事务提交这一功能进行封装,程序员在业务开发中不需要显示的提交事务

二,数据库事务管理

        1,什么是数据库事务管理

        数据库事务管理就是对一次数据库操作过程中执行的多条语句进行管理,保证一次对数据库操作过程中多条SQL要么都直行程,要么都不执行,从而保证数据的一致性

        我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法成,此时由于业务逻辑并未正确的完成,之前成 功操作数据的并不可靠,需要在这种情况下进行回退。
        事务的作用:就是为了保证用户的每一个操作都是可靠的,事务中的每一步操 作都必须成功执行,只要有发生异常就回退到事务开始未进行操作的状态,这些 操作要么都完成,要么都取消,从而保证数据满足一致性的要求

        2,实例

        例如:sql1: A - 500        sql2: B + 500  这两个语句要么都执行要不都不执行确保转账数据的一致性   

三,Spring中的事务管理氛围两种形式:

        1,编程式事务管理

              需要程序员在代码中自己控制事务提交和回滚

             这种方式已经在实际情况下很少使用了,一般使用后面这种声明式事务管理

        2,声明式事务管理

            建立在 AOP 基础上,本质是对方法前后进行拦截,所以声明式 事务是方法级别的。

             声明事务底层使用了AOP思想,可以为方法声明式事务不生效的情况

        3,配置事物管理器

<!-- 配置 spring 事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>

        4,声明式事务不生效的场景

        (1)@Transactional 应用在非public 修饰的方法上

        (2) 异常被catch捕获导致认为没有异常,造成不生效的结果

        (3)出现编译异常,还是会提交事务

        (4)数据库引擎不支持事务        mysql中只有innodb引擎支持事务的

@Transactional如果添加到类上面,此类所有的方法都在Spring事务管理中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值