声明式事务

声明式事务

  • 事务的ACID原则:

    • 原子性:确保要么都成功,要么都失败
    • 一致性:操作前和操作后的数据一致
    • 隔离性:多个业务可能同时操作一个资源,互不干扰,防止数据的损坏
    • 持久性:一旦事务被提交,就会持久化到了数据库,不可改变

    声明式事务: AOP

    在xml导入事务的约束
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
配置文件
<!--  配置声明式事务  -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
<!--  结合aop实现事务的织入  -->
<!--  配置事务通知  -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <!-- 给方法配置事务  -->
    <!-- 配置事务的传播性  propagation="REQUIRED" 默认 -->
    <tx:attributes>
        <tx:method name="*" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>
<!-- 配置事务的切入  -->
<!-- execution(* com.saxon.mapper.*.*(..)) com.dada.mapper里的全部类和全部方法  -->
<aop:config>
    <aop:pointcut id="txPointCut" expression="execution(* com.saxon.mapper.*.*(..))"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
</aop:config>

Spring中的事务管理

声明式事务:

AOP
配置声明式事务的配置文件,在博客开始的配置中已经有,查看开始文件

编程式事务:

需要在代码中进行事务的管理

思考

为什么需要事务?
  • 如果不配置事务,可能存在数据提交不一致的情况下;
  • 如果我们不在spring中去配置声明式事务,我们就需要在代码中手动配置事务;
  • 事务在项目的开发中十分重要,设计到数据的一致性和完整性问题,不容马虎
posted @ 2021-06-26 16:06  saxon宋  阅读(62)  评论(0)    收藏  举报