java @transactional注解的参数如何使用
时间: 2023-07-06 09:13:50 浏览: 94
`@Transactional`注解是用于标记一个方法需要进行事务管理。它可以应用于类、接口、方法以及方法参数等级别。
`@Transactional`注解有以下几个常用参数:
1. `propagation`:事务的传播行为,默认为`Propagation.REQUIRED`,即如果当前已经存在一个事务,则加入该事务,否则新建一个事务执行。
2. `isolation`:事务的隔离级别,默认为`Isolation.DEFAULT`,即使用数据库默认的隔离级别。
3. `readOnly`:是否只读事务,默认为`false`,即可读可写事务。
4. `timeout`:事务的超时时间,默认为`-1`,即使用数据库默认的超时时间。
5. `rollbackFor`:哪些异常需要回滚事务,默认为`RuntimeException`和`Error`。
6. `noRollbackFor`:哪些异常不需要回滚事务,默认为空,即所有异常都需要回滚事务。
例如,以下是一个使用`@Transactional`注解的示例:
```
@Transactional(propagation = Propagation.REQUIRED,
isolation = Isolation.DEFAULT,
readOnly = false,
timeout = -1,
rollbackFor = Exception.class,
noRollbackFor = ArithmeticException.class)
public void doSomething() {
// 这里写需要进行事务管理的代码
}
```
在上面的示例中,我们定义了一个`doSomething()`方法,并使用`@Transactional`注解标记该方法需要进行事务管理。其中,我们指定了事务的传播行为为`Propagation.REQUIRED`,隔离级别为默认级别,事务为可读可写,超时时间为默认时间,需要回滚`Exception`类的异常,不需要回滚`ArithmeticException`类的异常。
阅读全文