zoukankan      html  css  js  c++  java
  • 尚硅谷面试第一季-08Spring支持的常用数据库事务传播属性和事务隔离级别

    目录结构:

    关键代码:

    BookShopServiceImpl.java

     1 package Spring支持的常用数据库事务传播属性和事务隔离级别.tx.service.impl;
     2 
     3 import Spring支持的常用数据库事务传播属性和事务隔离级别.tx.dao.BookShopDao;
     4 import Spring支持的常用数据库事务传播属性和事务隔离级别.tx.service.BookShopService;
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Service;
     7 import org.springframework.transaction.annotation.Isolation;
     8 import org.springframework.transaction.annotation.Propagation;
     9 import org.springframework.transaction.annotation.Transactional;
    10 
    11 
    12 /**
    13  * @Transactional注解
    14  *     该注解可以添加到类上,也可以添加到方法上
    15  *     如果添加到类上,那么类中所有的方法都添加上了事务
    16  *     如果添加到方法上,只有添加了该注解的方法才添加了事务
    17  */
    18 //@Transactional
    19 @Service("bookShopService")
    20 public class BookShopServiceImpl implements BookShopService {
    21 
    22     @Autowired
    23     private BookShopDao bookShopDao;
    24     
    25     //1.请简单介绍Spring支持的常用数据库事务传播属性和事务隔离级别?
    26     
    27     /**
    28      * 事务的属性:
    29      *     1.★propagation:用来设置事务的传播行为
    30      *         事务的传播行为:一个方法运行在了一个开启了事务的方法中时,当前方法是使用原来的事务还是开启一个新的事务
    31      *         -Propagation.REQUIRED:默认值,使用原来的事务
    32      *         -Propagation.REQUIRES_NEW:将原来的事务挂起,开启一个新的事务
    33      *     2.★isolation:用来设置事务的隔离级别
    34      *         -Isolation.REPEATABLE_READ:可重复读,MySQL默认的隔离级别
    35      *         -Isolation.READ_COMMITTED:读已提交,Oracle默认的隔离级别,开发时通常使用的隔离级别
    36      */
    37     @Transactional(propagation=Propagation.REQUIRES_NEW,isolation=Isolation.READ_COMMITTED)
    38     @Override
    39     public void purchase(int userId, String isbn) {
    40         //1.获取要买的图书的价格
    41         double bookPrice = bookShopDao.getBookPriceByIsbn(isbn);
    42 //        System.out.println(bookPrice);
    43         //2.更新图书的库存
    44         bookShopDao.updateBookStock(isbn);
    45         //3.更新用户的余额
    46         bookShopDao.updateAccountBalance(userId, bookPrice);
    47 //        double bookPriceByIsbn = bookShopDao.getBookPriceByIsbn(isbn);
    48 //        System.out.println(bookPriceByIsbn);
    49     }
    50 
    51 }

    完整代码:

     https://gitee.com/ZhangShunHai/interview_atguigu_seasonone/tree/master/ssm_spring%20transaction

    课堂重点:

  • 相关阅读:
    LaZagne — 一键抓取目标机器上的所有明文密码,todo,自己手动试试效果
    jsch文件复制(拷贝)
    使用Apache commons-pool2实现高效的FTPClient连接池的方法
    室内定位会议和期刊(2020-2021)
    Axure RP 9.0 Team Edition
    新电脑 windows 10 登录 执行此操作需要Internet
    maven配置,以及项目 Dependency xxxx not found 解决过程
    MySQL 下载网站
    Tomcat8.5和Tomcat9安装SSL证书的教程
    Python id() 函数
  • 原文地址:https://www.cnblogs.com/zsh-blogs/p/10616245.html
Copyright © 2011-2022 走看看