Spring学习(十五)-事务的其他属性

来源:互联网 发布:淘宝格子铺是什么 编辑:程序博客网 时间:2024/06/05 22:07

事务的属性:

1.使用propagation指定事务的的传播行为,即当前的事务方法被另一个事务方法

调用时如何使用事务,默认取值为REQUIRED,即使用调用方法的事务

REQUIRES_NEW使用自己的事务 调用的事务方法的事务被挂起

2.使用isolation指定事务的隔离级别,最常用的取值为READ_COMMITTED

3.默认情况下Spring的声明式事务对所有的运行时异常进行回滚,也可通过对应的

属性进行设置为readOnly=true

5.使用timeout指定强制回滚之前事务可以占用的时间

1.BookShopServiceImpl实现类

“`
package com.spring.tx;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service(“bookShopService”)
public class BookShopServiceImpl implements BookShopService {

@Autowiredpublic BookShopDao bookShopDao;/*添加事务注解 * 1.使用propagation指定事务的的传播行为,即当前的事务方法被另一个事务方法调用时 * 如何使用事务,默认取值为REQUIRED,即使用调用方法的事务 * REQUIRES_NEW使用自己的事务 调用的事务方法的事务被挂起 * 2.使用isolation指定事务的隔离级别,最常用的取值为READ_COMMITTED * 3.默认情况下Spring的声明式事务对所有的运行时异常进行回滚,也可通过对应的属性进行设置 * 4.使用readOnly指定事务是否为可读,表示这个事务只读数据但不更新数据 * 应设置为readOnly=true * 5.使用timeout指定强制回滚之前事务可以占用的时间 * @Transactional(propagation=Propagation.REQUIRES_NEW,        isolation=Isolation.READ_COMMITTED,        noRollbackFor= {UserAccountException.class},        readOnly=false,        timeout=3) */@Transactional(propagation=Propagation.REQUIRES_NEW,        isolation=Isolation.READ_COMMITTED)@Overridepublic void purchase(String username, String isbn) {    try {        Thread.sleep(2000);    } catch (InterruptedException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    //1.获取书的单价    int price=bookShopDao.findBookPriceByIsbn(isbn);    //2.更新书的库存    bookShopDao.updateBookStock(isbn);    //3.更新用户余额    bookShopDao.updateUserAccount(username, price);}

}

““

原创粉丝点击