日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

事務(wù)隔離級(jí)別 在spring實(shí)戰(zhàn)

作者:望月聽(tīng)風(fēng) 更新時(shí)間: 2022-03-14 編程語(yǔ)言

四種隔離級(jí)別

  • 讀未提交
  • 讀已提交
  • 可重復(fù)讀
  • 序列化

如果沒(méi)有隔離,多線程出現(xiàn)的問(wèn)題

  • 臟讀
  • 第一類丟失更新
  • 不可重復(fù)讀
  • 第二類丟失更新
  • 幻讀

解釋
臟讀:一個(gè)連接讀到另一個(gè)連接修改但沒(méi)有提交的數(shù)據(jù)
第一類丟失更新:a連接開(kāi)啟事務(wù),b連接隨后開(kāi)啟事務(wù)并更新完,但a發(fā)生異常回滾,回到a最初的狀態(tài),把b的更新給淹沒(méi)
不可重復(fù)讀:a讀數(shù)據(jù)假設(shè)為1,b修改數(shù)據(jù)改為2并提交,a再讀數(shù)據(jù)發(fā)現(xiàn)數(shù)據(jù)變?yōu)?
第二類丟失更新:a連接開(kāi)啟事務(wù),b連接隨后開(kāi)啟事務(wù)并更新完,a提交事務(wù),把b的更新給淹沒(méi)
幻讀:a查詢表中共多少條數(shù)據(jù),之后b插入一條數(shù)據(jù),a再讀就會(huì)發(fā)現(xiàn)前后兩次不一致。

選擇隔離級(jí)別避免發(fā)生問(wèn)題

在這里插入圖片描述

在spring中添加事務(wù)

聲明式事務(wù)
  • 注解
  • xml配置文件
編程式事務(wù)

TransactionTemplate 這種適合更細(xì)粒度的事務(wù)

代碼實(shí)戰(zhàn)

isolation 隔離級(jí)別
propagation 事務(wù)傳播
常用的三種:

  • required
  • required-new
  • nested

解釋

required:a調(diào)用b,如果a有事務(wù),就按a的事務(wù)來(lái),沒(méi)有就創(chuàng)建事務(wù),b失敗回滾
required-new:a調(diào)用b,創(chuàng)建一個(gè)新事務(wù),并暫停外部事務(wù),就是說(shuō)不管a是夠成功,b都完成了
nested:如果存在外部事務(wù)a,則嵌套到外部事務(wù)中,a并有獨(dú)立的提交和回滾,b如果失敗則回滾,但a不一定,也就是說(shuō)a不管b成功與否,自己先完成再說(shuō),否則就和required-new一樣

如果事務(wù)中發(fā)生情況就不會(huì)插入成功

聲明式事務(wù)

@Transactional(isolation = Isolation.REPEATABLE_READ,propagation = Propagation.REQUIRED)
    public void insert(){
        User user = new User();
        userService.insertUser(user);
        int a=1/0;
    }

編程式事務(wù)

public void insert(){
        TransactionTemplate template = new TransactionTemplate();
        template.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ);
        template.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
        
        template.execute(new TransactionCallback<Object>() {
            @Override
            public Object doInTransaction(TransactionStatus status) {
                User user = new User();
                userService.insertUser(user);
                int a=1/0;
                return null;
            }
        });
    }

原文鏈接:https://blog.csdn.net/miss_na/article/details/123084821

欄目分類
最近更新