【Spring】Spring事务使用、七大传播机制

事务

事务

  • 涉及到数据的一致性问题
  • 确保完整性和一致性
  • ACID原则:
    • 原子性:要么都成功,要么都失败;
    • 一致性:事务前后数据的完整性没有被破坏;
    • 隔离性:事务与事务之间相互隔离;
    • 持久性:事务完成后,数据的修改是永久的,不会因为机器重启等原因丢失;
  • 事务举例:
    insertUser();//可以正确执行
    deleteUser();//执行报错
    //结果:insert成功,delete失败
    

    普通情况下,delete未成功执行,但insert仍然会执行,我们如果想要这两个事务操作为一个整体,即如果delete失败,那么insert也不要执行。此时,我们就需要声明式事务;

Spring事务

  • MyBatis-Spring 允许 MyBatis 参与到 Spring 的事务管理中。而不是给 MyBatis 创建一个新的专用事务管理器,MyBatis-Spring 借助了 Spring 中的 DataSourceTransactionManager 来实现事务管理。
  • 一旦配置好了 Spring 的事务管理器,就支持 @Transactional 注解和 AOP 风格的事务配置。
  • 在事务处理期间,一个单独的 SqlSession 对象将会被创建和使用。当事务完成时,这个 session 会以合适的方式提交或回滚。
  • 事务配置好了以后,MyBatis-Spring 将会透明地管理事务。这样在你的 DAO 类中就不需要额外的代码了。
  • 声明式事务:AOP
  • 编程式事务:硬编码形式在代码中,进行事务管理
  1. 在spring配置文件中,配置事务管理器,并注入DataSource
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    	<constructor-arg ref="dataSource" />
    </bean>
    

    注意:为事务管理器指定的 DataSource 必须和用来创建 SqlSessionFactory的是同一个数据源,否则事务管理器就无法工作了。

  2. 结合AOP实现事务的织入
    • 配置事务通知的切面:引入tx约束,设置事务管理器、事务装配的方法、以及事务传播特性:
      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:aop="http://www.springframework.org/schema/aop"
             xmlns:context="http://www.springframework.org/schema/context"
             xmlns:tx="http://www.springframework.org/schema/tx"
             xsi:schemaLocation=
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值