spring的事务管理--三种方式分析

事务特性

1、原子性:一个事务中的一系列的操作要么都完成要么都无法完成
2、隔离性:当多个用户同时访问数据库时 数据库为每一个用户开启一个事务 并发事务之间相互不受影响
3、持久性:一个事务被提及后 其对数据库数据的操作 更改将永久的保存在数据库中 不管数据库如何都不会变,
4、一致性:数据库中的数据 在一个事务的执行前后应该保持一致

事物的隔离级别

1、脏读:一个线程中的事务读到了另一线程中事务未提交的数据(a读到了b回滚的数据)
2、不可重复读:一个线程中的事务读到了另一个线程已经提交的更新的数据
3、虚读:一个线程中的事务读到另一线程中事务已经提交的插入的数据
READ UNCOMMITTED 不可重复读、虚读、脏读都有可能发生
READ COMMITTED 避免脏读 虚读和不可重复读可能发生
REPEATABLE READ 避免脏读和不可重复读
SERIALIZABLE serializable 避免脏读、不可重复读和虚读

spring的事务管理三大接口

PlatformTransactionManager 平台事务管理器,spring要管理事务,必须使用事务管理器,
进行事务配置时,必须配置事务管理器。
TransactionDefinition:事务详情(事务定义、事务属性),spring用于确定事务具体详情,
例如:隔离级别、是否只读、超时时间,事务传播行为等
进行事务配置时,必须配置详情。spring将配置项封装到该对象实例。
TransactionStatus:事务状态,spring用于记录当前事务运行状态。例如:是否有保存点,事务是否完成。

一、半自动的方式 配置代理

在这里插入图片描述
在主配置文件中配置代理
在这里插入图片描述
配置数据源 此处用的c3p0数据库连接池 id=“txManager” bean 为事务管理器 也是spring事务管理的核心
另外两个bean是service层和dao层实现类的bean

二、全自动XML方式 (常用的方式)

在这里插入图片描述
dao层继承了JdbcDaoSupport 获得父类中的模板对象进行操作

三、注解全自动

在这里插入图片描述
此时在主配置文件中配置事务管理器 这里需要主要:要开启注解驱动 才能扫描到相应的注解
在这里插入图片描述
在需要加上事务管理的类上加上@Transactional 注解 将会给类中的所有public方法加上事务管理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值