Spring学习总结9(基于Hibernate的事务管理)

基于注解形式的事务管理

 

XML配置

 

代码示例

类名上也可以写事务注解,但是优先级低于方法上的事务注解

 

 

@Transactional 注解的属性

属性类型描述
propagation枚举型:Propagation可选的传播性设置 默认为required
isolation枚举型:Isolation可选的隔离性级别(默认值:ISOLATION_DEFAULT
readOnly布尔型读写型事务 只读型事务(当查询时设为只读会比不设要快)
timeoutint型(以秒为单位)事务超时
rollbackFor一组 Class 类的实例,必须是Throwable 的子类一组异常类,遇到时 必须 进行回滚。默认情况下checked exceptions不进行回滚,仅unchecked exceptions(即RuntimeException的子类)才进行事务回滚。
rollbackForClassname一组 Class 类的名字,必须是Throwable的子类一组异常类名,遇到时 必须 进行回滚
noRollbackFor一组 Class 类的实例,必须是Throwable 的子类一组异常类,遇到时 必须不 回滚。
noRollbackForClassname一组 Class 类的名字,必须是Throwable 的子类一组异常类,遇到时 必须不 回滚

 

事务传播特性详解:

1.required

如果在执行该方法之前,已经打开了一个事务,会将当前方法加入到之前的事务之中。如果没有,则自己新开一个事务。

 

2.requiredsNew

 

 

如果在执行该方法之前,已经打开了一个事务,会挂起之前的事务,自己新开一个事务。当自己的事务执行完之后,再进行之前的事务。

 

3.mandatory

在调用方法之前,必须已经打开了一个事务,否则将会抛出异常

 

4.nested

如果在执行方法前,已经打开了一个事务,则再开一个新事务内嵌在之前的事务之中。

nested与required的区别:nested注解的方法,如果事务回滚不会影响到之前的事务

nested与requiredsNew的区别:nested注解的方法,如果之前的事务,在nested已经执行完之后,事务进行了回滚,也会让nested里的事务进行回滚

 

5.never

如果在执行该方法之前,已经打开了一个事务,则抛出异常

 

6.not_supported

注解not_supported的方法不支持事务。如果在执行该方法之前,已经打开了一个事务,将之前的事务挂起,执行完该方法之后,在继续进行之前的事务

 

7.supported

如果在执行该方法之前,已经打开了一个事务,支持之前的事务,如果没有打开事务,则也不打开新的事务。即与调用supported注解的方法的事务保持一致,它有我就有,它无我就无

 

基于XML的事务管理(常用)

将上面XML中的<tx:annotation-driven transaction-manager="txManager"/>给去掉,增加如下的配置

 

 

 

 

 

 

 

 

 

 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值