spring对事务的支持

Spring中的事务可分为两种:程控式事务和声明式事务。

 

Spring不直接管理事务,它只提供事务管理器,将对事务的管理委托给第三方持久平台。

事务管理器

第三方持久平台

Jdbc.datasource.DataSourceTransactionManager

jdbc

Orm.hibernate.HibernateTransactionManager

Hibernate2

Orm.hibernate3.HibernateTransactionManager

Hibernate3

  

 

一、程控式事务

二、声明式事务

五个基本特性:1. 传播特性(Propagation) 2. 隔离级别(Isolation) 3. 回滚机制(Rollback Rules) 4. 超时(TimeOut) 5. 只读(Read-Only)

1. Spring支持的传播特性:

 

传播特性

意义

PROPAGATION_MANDATORY

表示该方法一定要在一个事务中运行,没有事务就抛异常。

PROPAGATION_NESTED

 

PROPAGATION_NEVER

表示该方法不该在一个事务中运行,若当前有事务就抛异常

PROPAGATION_NOT_SUPPORTED

表示该方法不该在一个事务中运行,若当前有事务,在该方法的运行期间,将挂起该事务

PROPAGATION_REQUIRED

必须在一个事务中运行,如果当前已经有事务,就在旧的事务中运行,否则启动一个新的事务。

PROPAGATION_REQUIRED_NEW

一个方法一个事务,没有事务,启动一个新的事务,有事务,挂起旧的事务,现启动一个新的事务。

PROPAGATION_SUPPORTS

一个方法有事务就在事务中运行,没事务就不在事务中运行

2. Spring支持的隔离级别

脏读

 

不可重复读

事务一:select name from test where id = 1; //张三

事务二:update test set name = ‘李四’ where id = 1;

事务一:select name from test where id = 1; //李四

第一次读是“张三”第二次读就变成“李四”了。

幻读

事务一:update test set name = ‘张三’;//把所有人的姓名都变成张三

事务二:insert into test values(100,’李四’);

事务一:select name from test;//怎么出现李四了。

3. Spring默认只支持“运行时”异常的回滚机制,不支持可捕捉异常的回滚。

4.Spring声明式事务的应用

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值