声明式事务
声明式事务
-
事务的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中去配置声明式事务,我们就需要在代码中手动配置事务;
- 事务在项目的开发中十分重要,设计到数据的一致性和完整性问题,不容马虎

浙公网安备 33010602011771号