2.spring事物管理的一组API
3.spring的编程式事物管理
4.spring声明式事物管理
一.事物知识点回顾:
事务:是指一组逻辑上的操作,要不全部成功、要么全部失败。
事务特性:原子性、一致性、隔离性、持久性。
要么都发生、要么都不发生。最终结果一致、比如转账,最终钱总数都不变。多并发的时候,事物不能互相干扰。修改后记录到数据库就不会被改变。
二.spring 事物接口:
主要有三个高层抽象的接口:
PlatformTransactionManager 事物管理器
TransactionDefinition 事物定义信息
TransactionStatus 事务具体运行状态
spring就有上面几个核心接口构成事物管理操作。
在事物管理器的选择上不同的持久层框架选择不同的管理器 如mybatis
<!-- 不同的事物管理器最终都实现了PlatformTransactionManager这个接口 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
事物定义接口里面有几个隔离级别:
如果是serializable隔离级别,基本锁住事物所涉及的数据表。不能发生并发。
mysql是pepeatable_read
oracle是read_committed
default就是数据库默认的级别。
这种级别可以根据不同情况自行选择。
事物传播行为:
分为三类:1,4,7最重要。
涉及到多个事物才能完成的业务逻辑。
两种:业务里面调用业务、并列业务完成一个主业务。具体情况具体分析。
嵌套事务的提交只能依赖于外事物。
最后一个接口就是TransactionStatus 获得事物相应状态接口,