Spring事务简要笔记

Spring测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:xxx.xml")
@Resource(name="")


Spring事务:逻辑上的一组操作,要么全部成功,要么全部失败
Spring事务管理的一组API


Spring的编程式事务管理(事务管理模板)
1.在实际运用中很少使用
2.通过TrasactionTemplate手动管理事务
 1.在AccountService中使用TransactionTemplate
 2.TransactionTemplate依赖DataSourceTransactionManager
 3.DataSourceTransactionManager依赖DataSource构造
 
(事务管理器有了连接池才能获得链接进行事务管理) 
 

Spring的声明式事务管理(重点)
1.开发中推荐使用(代码入侵性最小)
2.Spring的声明式事务是(通过AOP实现的)
第一种:基于代理TransactionProxyFactoryBean;(很少使用)
需要为每个进行事务管理的类,配置一个TransactionProxyFactoryBean进行增强
注入:目标,事务管理器,事务属性:
1.PROPAGATION :事务的传播行为 
2.ISOLATION  :事务的隔离级别
3.readOnly    :只读,(不可以进行修改,插入,删除)
4.-Exception  :发生那些异常回滚事务
5.+Exception  :发生那些异常事务不回滚
第二种:基于AspectJ的XML方式(aspectJ的话,就是分的更加的详细,切入点(类),切入面(方法))
1.配置事务的通知<tx>
2.配置切面,切点<aop>
第三种:基于注解的方式
1.开启事务<tx:annotation-driven transaction-Manager="" />
2.service类@Transactional(name=value)

事务的特性:
原子性,不可分割,要么失败,要么成功
一致性,前后数据完整性必须保持一致
隔离性,事务之间相互不影响
持久性,一个事务一旦提交,对数据库的数据改变是永久性。(数据库发生改变也不影响)




Spring事务管理高层抽象主要包括3个接口:
1.PlaformTransactionManager 事务管理器
2.TransactionDefinition 事务定义信息(隔离,传播,超时,只读)
3.TransactionStatus 事务具体运行状态

1.PlaformTransactionManager接口,根据不同的持久层的框架有不同的实现类
2.TransactionDefinition接口,提供了一组常量和方法
    隔离级别:解决(脏读,不可重复读,幻读)

->脏读:a事务修改了数据,但是还未提交,b事务读到了这个数据,
但是如果回滚了,b事务读的的数据就是无效的
->不可重复读:限制在一个事务里,多次读到的数据,竟然有不同
->幻读:a事务读了几行数据,b事务insert了几条数据,
导致a事务第二次执行的时候,数据竟然和第一次读到的数据,
不一致(两次查询不一致)

传播行为:解决业务层方法之间的相互调用的问题(7种分3类)
1.PROPAGATION_REQUIRED 支持当前事务,如果不存在就新建一个(主)
2.PROPAGATION_SUPPORTS 支持当前事务,如果不存在,就不使用事务
3.PROPAGATION_MANDATORY 支持当前食物,如果不存在,抛出异常

1.PROPAGATION_REQUIRES_NEW 如果有事务存在,挂起当前事务,创建一个新事物(主)
2.PROPAGATION_NOT_SUPPORTED 以非事务方式运行,如果有事物,挂起当前事物
3.PROPAGATION_NEVER 以非事物方式运行,如果有事务存在,抛出异常

1.PROPAGATION_NESTED 如果当前事务存在,则嵌套事务执行(主)(
回滚到保存点,如果a发生异常,那么保存事务点,b回滚的时候回滚到保存点或者事务的开始)
3.TransactionStatus 获取或判断事务的状态
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值