1、自定义设置回滚异常
rollbackFor和rollbackForClassName回滚的异常
/**
* @Transactional 表示使用通知( 启用事务 ) <br/>
* rollbackFor 属性可以自定义哪些异常可以回滚事务 <br/>
* rollbackForClassName 属性可以自定义哪些全类名的异常回滚事务 <br/>
*/
@Transactional(rollbackForClassName = "java.io.FileNotFoundException")
public void multiUpdate() throws Exception {
bookDao.updateBook();
int i = 12;
if (i == 12) {
throw new FileNotFoundException();
}
userDao.updateUser();
}
2、事务的只读属性
insert , update , delete 语句是写操作
select 是读操作
只读,就是只允许用户查询数据 , 不允许用户修改数据.
测试readOnly只读属性
/**
* @Transactional 表示使用通知( 启用事务 ) <br/>
*
* readOnly 它可以设置当前方法是否允许写操作 <br/>
* 默认是允许的.所以它的默认值是false. <br/>
* 如果设置readOnly = true就不允许执行写操作的sql语句.
*/
@Transactional(readOnly = true)
public void multiUpdate() throws Exception {
bookDao.updateBook();
userDao.updateUser();
}
3、事务超时属性timeout (秒为单位)
/**
* @Transactional 表示使用通知( 启用事务 ) <br/>
*
* timeout属性可以设置多少秒内不再允许执行sql语句( 在指定秒数内要完成事务 ) <br/>
* timeout = 3 表示3秒后不允许执行sql语句,否则就是操作超时 <br/>
*/
@Transactional(timeout = 3)
public void multiUpdate() throws Exception {
bookDao.updateBook();
Thread.sleep(5000);
userDao.updateUser();
}
超时的异常信息:
4、事务的传播特性propagation
什么是事务的传播特性 ( 传播行为 ):
当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。
事务的传播行为可以由传播属性指定。Spring定义了7种类传播行为。
事务的传播特性,有以下几种类型:
5、注解演示事物传播特性
UserService
BookService
TransactionService
大小事务传播特性都是REQUIRED
@Transactional(propagation = Propagation.REQUIRED)
public void multiTransaction() {
@Transactional(propagation = Propagation.REQUIRED)
public void updateBook() {
@Transactional(propagation=Propagation.REQUIRED)
public void updateUser() { }
大小事务传播特性都是REQUIRES_NEW
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void multiTransaction()
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateBook()
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateUser()
大事务是REQUIRED,小1REQUIRED,小2REQUIRES_NEW文章来源:https://www.toymoban.com/news/detail-443645.html
@Transactional(propagation = Propagation.REQUIRED)
public void multiTransaction()
@Transactional(propagation = Propagation.REQUIRED)
public void updateBook()
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateUser()
文章来源地址https://www.toymoban.com/news/detail-443645.html
到了这里,关于Spring的第十五阶段:Spring的事务管理(02)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!