java 中的事物怎么配置_java中级开发工程师必问:spring中事物的配置方式,事物的传播方式以及隔离级别...

spring配置事物方式:

spring+mybatis

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

spring+hibernate

notice:

@Transactional作用于类名上启用事物,该类中的public修饰的方法都启用事物

同样该注解作用在某个方法上的时候,该方法也必须是public修饰的

具体使用及配置多个属性定义

同时一个事物可以定义多个属性,例如:

@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class,timeout=1,isolation=Isolation.DEFAULT)

public void saveUser(Map map) throws Exception {

System.out.println("方法开始");

for (int i = 0; i < 500000; i++) {

System.out.println("*");

}

System.out.println("进入保存");

userDao.saveUser(map);

System.out.println("退出保存");

}

事物配置中有如下属性可供配置:

事物的传播性(@Transactional(propagation=Propagation.REQUIRED)):

REQUIRED:默认属性,如果有事物加入事物,没有事物新建一个事物。

REQUIRES_NEW:新建一个事物,如果有事物,则把该事物挂起,新建的事物和挂起的事物没有任务关系

SUPPORTS:支持当前事物,如果没有事物,则按照非事物方式执行

MANDATORY:支持当前事物,如果当前没食物则抛出异常

NOT_SUPPORTED:以非事物方式执行,如果当前存在事物则挂起

NEVER:以非事物方式执行,如果存在事物则抛出异常

NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务,则按REQUIRED属性执行。它使用了一个单 独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器起效。

事物的隔离性:

事物的超时性(@Transactional(timeout=30)):

事物的超时性和数据库连接的超时性不是一个概念

回滚:

指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)

指定多个异常类:@Transactional(rollbackFor={RuntimeException.class, Exception.class})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值