Spring的事务管理及应用

事务是用来做什么的?

主要是对数据库进行事务管理,spring的事务主要是用来管理spring所加载的ORM(Hibernate、Mybatis、MybatisPlus……)框架。

1、@Transactional(这里是对事务的一些描述属性)标识
2、spring在启动的时候会去解析生成bean,这个过程中会检测拥有相关注解的类和方法。同时给带有此事务的类或者方法生成相应的代理。

关于@Transactional的注解属性都有哪些:

value: 可选的限定描述符,制定使用的事务管理器;
Propagtion:可选的事务传播行为设置;
isolation:可选的事务隔离级别设置;
readOnly:读写或只读事务;
timeout:事务超时时间设置; ms
rollbackFor :导致事务回滚的异常类名字数组
oRollbackFor:不会导致事务回滚
noRollbackForClassName:不会导致事务回滚的异常类名字数组。

Propagtion:各属性值的含义:
propagtion = REQUIRED 如果有事务,那么假如事务,没有的话新创建一个事务
propagtion = NOT_SUPPORTED:这个方法不开启事务;
propagtion = REQUIREDDS_NEW:不管是有有事务的存在,都创建一个新的事务来执行,原来的事务挂起,
propagtion = MANDATORY:必须在一个已有事务中执行;
propagtion = NEVER:不能在一个事务中执行,就是当前必须没有事务,否者抛出异常;
propagtion = SUPPORTS:当前存在事务,则在事务中运行,否者以非事务形态进行运行;
propagtion = NESTED:若有当前存在事务,则在运行一个嵌套的事务,如果当前没有事务,则按照REQUIRED 的方式来运行;

Isolation:各属性值的含义:
TransactionDefinition.ISOLATION_DEFAULT:这是默认值,表示使用底层数据库的默认隔离级别。
TransactionDefinition.ISOLATION_READ_UNCOMMITTED:该隔离级别表示一个事务可以读取另一个事务修改但没有提交的数据,该级别不能防止脏读数据,不可重复读和幻读,因此很少使用该隔离级别,
TransactionDefinition.ISOLATION_READ_COMMITTED:该隔离级别表示一个事务只能读取另一个事务已经提交的数据,该级别可以防止脏读 ,这也是大多数情况下的推荐属性。(经常使用到的属性)
TransactionDefinition.ISOLATION_REPEATABLE_READ:该事物隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同,该级别可以防止脏读 和不可重复读。
TransactionDefinition.ISLATION_SERIAIIABLE:所有的事务一次逐个执行,这样事务之间就完全不可能进行干扰,也就是说,该级别可以防止脏读 不可重复读及幻读 但是这将影响到程序的运行性能,通常情况下也会用到该级别。

名词解释:

脏读:当事务读取还未被提交的数据时,就会发生这种事件。
徐同学在北京,修改了一条数据,(未提交), 旭同学长春查到了;
幻读:就是读取到了历史数据,即使此数据已经被修改了,那么也会读到被修改前的这条数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值