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

    课堂重点:

  • 相关阅读:
    e807. 设置进程监听对话框的延迟弹出
    e806. 创建进程监听对话框
    Spring MVC静态资源处理
    SpringMVC处理方法的数据绑定
    HttpMessageConverter
    Redis中对Key进行分类
    LinkedHashMap源码剖析
    TreeMap源代码深入剖析
    CMS垃圾收集器
    @Java VisualVM 插件地址
  • 原文地址:https://www.cnblogs.com/zsh-blogs/p/10616245.html
Copyright © 2011-2022 走看看