什么是事物?事物指的是逻辑上的一组操作,这组操作要么全部成功要么全部失败。
Spring事务: 1,原子性 2,一致性 3,隔离性 4,持久性。
原子性:原子性是指事物是不可分割的工作单位,事物中的操作要么都发生要么都不发生。
一致性:事物数据完整性前后保持一致。
隔离性:隔离性是指多个用户同时并发访问数据库时,一个用户的事物不能被其他用户干扰,多个并发事务数据要隔离。
持久性:事物一旦被提交,它对数据库的改变是永久的,及时数据库发生故障也不应该对其有影响。
Spring事物管理的接口:
1,`PlatfromTransactionManager`(事物管理器)
`DataSourceTransactionManager`(Mybatis JDBC 用)
2,`TransactionDefinition`(事物定义信息(隔离,传播,超时,只读))
3,`TransactionStatus`(事物具体运行状态)
Spring事物管理:
基于Xml配置:
1,配置事物管理器
<bean id="transactionManager"class="DataSourceTransactionManager">
<property name="dataSource" ref ="dataSource(数据库连接池的id)" />
</bean>
2,配置事物
<tx:advice id = "txAdvice" transactionManager = "transactionManager">
<tx:attributs>
<tx:method name="方法名 要去执行事物的方法">
</tx:attributs>
</tx:advice>
配置切面:
<aop:config>
//配置切入点
<aop:pointcut expression="execution(包名+方法*(参数..))" id="pointcut1">
//加号代表子类,*所有方法,(..)不限定参数个数
//配置切面
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut1"/>
//aspect(多个切入点),advisor(单个切入点)
</aop:config>
基于注解配置:
1,配置事物管理器
<bean id="transactionManager"class="DataSourceTransactionManager">
<property name="dataSource" ref ="dataSource(数据库连接池的id)" />
</bean>
2,开启注解事物
//注解驱动
<tx:annottation-driven transaction-manager="transactionManager"/>
3,配置注解
那个类上需要配置事物就在那个类上去添加注解(@Transactional)