成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JavaWEB開(kāi)發(fā)13——事務(wù)與連接池

13651657101 / 1085人閱讀

摘要:一致性一個(gè)事務(wù)中,事務(wù)前后數(shù)據(jù)的完整性必須保持一致。持久性持久性是指一個(gè)事務(wù)一旦被提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就是永久性的,接下來(lái)即使數(shù)據(jù)庫(kù)發(fā)生故障也不應(yīng)該對(duì)其有任何影響。

一、事務(wù)概述
1.什么是事務(wù)
一件事情有n個(gè)組成單元 要不這n個(gè)組成單元同時(shí)成功 要不n個(gè)單元就同時(shí)失敗
就是將n個(gè)組成單元放到一個(gè)事務(wù)中
2.mysql的事務(wù)
默認(rèn)的事務(wù):一條sql語(yǔ)句就是一個(gè)事務(wù) 默認(rèn)就開(kāi)啟事務(wù)并提交事務(wù)
手動(dòng)事務(wù):
1)顯示的開(kāi)啟一個(gè)事務(wù):start transaction
2)事務(wù)提交:commit代表從開(kāi)啟事務(wù)到事務(wù)提交 中間的所有的sql都認(rèn)為有效 真正的更新數(shù)據(jù)庫(kù)
3)事務(wù)的回滾:rollback 代表事務(wù)的回滾 從開(kāi)啟事務(wù)到事務(wù)回滾 中間的所有的 sql操作都認(rèn)為無(wú)效數(shù)據(jù)庫(kù)沒(méi)有被更新

二、JDBC事務(wù)操作
默認(rèn)是自動(dòng)事務(wù):
執(zhí)行sql語(yǔ)句:executeUpdate() ---- 每執(zhí)行一次executeUpdate方法 代表 事務(wù)自動(dòng)提交
通過(guò)jdbc的API手動(dòng)事務(wù):
開(kāi)啟事務(wù):conn.setAutoComnmit(false);
提交事務(wù):conn.commit();
回滾事務(wù):conn.rollback();
注意:控制事務(wù)的connnection必須是同一個(gè)
執(zhí)行sql的connection與開(kāi)啟事務(wù)的connnection必須是同一個(gè)才能對(duì)事務(wù)進(jìn)行控制

三、DBUtils事務(wù)操作
1.QueryRunner
有參構(gòu)造:QueryRunner runner = new QueryRunner(DataSource dataSource);
有參構(gòu)造將數(shù)據(jù)源(連接池)作為參數(shù)傳入QueryRunner,QueryRunner會(huì)從連 接池中獲得一個(gè)數(shù)據(jù)庫(kù)連接資源操作數(shù)據(jù)庫(kù),所以直接使用無(wú)Connection參數(shù) 的update方法即可操作數(shù)據(jù)庫(kù)

無(wú)參構(gòu)造:QueryRunner runner = new QueryRunner();
無(wú)參的構(gòu)造沒(méi)有將數(shù)據(jù)源(連接池)作為參數(shù)傳入QueryRunner,那么我們?cè)谑? 用QueryRunner對(duì)象操作數(shù)據(jù)庫(kù)時(shí)要使用有Connection參數(shù)的方法

四、使用ThreadLocal綁定連接資源

五、事務(wù)的特性和隔離級(jí)別(概念性問(wèn)題---面試)
1.事務(wù)的特性ACID
? 1)原子性(Atomicity)原子性是指事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中的操作 要么都發(fā)生,要么都不發(fā)生。?
? 2)一致性(Consistency)一個(gè)事務(wù)中,事務(wù)前后數(shù)據(jù)的完整性必須保持一致。
? 3)隔離性(Isolation)多個(gè)事務(wù),事務(wù)的隔離性是指多個(gè)用戶并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)時(shí), 一個(gè)用戶的 事務(wù)不能被其它用戶的事務(wù)所干擾,多個(gè)并發(fā)事務(wù)之間數(shù)據(jù)要相互隔離。
? 4)持久性(Durability)持久性是指一個(gè)事務(wù)一旦被提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變 就是永久性的,接下來(lái)即使數(shù)據(jù)庫(kù)發(fā)生故障也不應(yīng)該對(duì)其有任何影響。

2.并發(fā)訪問(wèn)問(wèn)題----由隔離性引起
如果不考慮隔離性,事務(wù)存在3中并發(fā)訪問(wèn)問(wèn)題。
1)臟讀:B事務(wù)讀取到了A事務(wù)尚未提交的數(shù)據(jù) ------ 要求B事務(wù)要讀取A事 務(wù)提交的數(shù)據(jù)
2)不可重復(fù)讀:一個(gè)事務(wù)中 兩次讀取的數(shù)據(jù)的內(nèi)容不一致 ----- 要求的是一個(gè)事 務(wù)中多次讀取時(shí)數(shù)據(jù)是一致的 --- unpdate
3)幻讀/虛讀:一個(gè)事務(wù)中 兩次讀取的數(shù)據(jù)的數(shù)量不一致 ----- 要求在一個(gè)事務(wù)多 次讀取的數(shù)據(jù)的數(shù)量是一致的 --insert delete
3.事務(wù)的隔離級(jí)別
1)read uncommitted : 讀取尚未提交的數(shù)據(jù) :哪個(gè)問(wèn)題都不能解決
2)read committed:讀取已經(jīng)提交的數(shù)據(jù) :可以解決臟讀 ---- oracle默認(rèn)的
3)repeatable read:重讀讀?。嚎梢越鉀Q臟讀 和 不可重復(fù)讀 ---mysql默認(rèn)的
4)serializable:串行化:可以解決 臟讀 不可重復(fù)讀 和 虛讀---相當(dāng)于鎖表

注意:mysql數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別
查看mysql數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別:select @@tx_isolation
設(shè)置mysql的隔離級(jí)別:set session transaction isolation level 設(shè)置事務(wù)隔離級(jí)別

總結(jié):

mysql的事務(wù)控制:
        開(kāi)啟事務(wù):start transaction;
        提交:commit;
        回滾:rollback;
JDBC事務(wù)控制:
        開(kāi)啟事務(wù):conn.setAutoCommit(false);
        提交:conn.commit();
        回滾:conn.rollback();
    DBUtils的事務(wù)控制 也是通過(guò)jdbc
        
    ThreadLocal:實(shí)現(xiàn)的是通過(guò)線程綁定的方式傳遞參數(shù)

    概念:
        事務(wù)的特性ACID
        并發(fā)問(wèn)題:臟讀、不可重讀、虛讀幻讀
        解決并發(fā):設(shè)置隔離級(jí)別
            read uncommitted
            read committed
            repeatable read (mysql默認(rèn))
            serialazable 

        隔離級(jí)別的性能:
            read uncommitted>read committed>repeatable read>serialazable 
        安全性:
            read uncommitted           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72456.html

相關(guān)文章

  • Java3y文章目錄導(dǎo)航

    摘要:前言由于寫(xiě)的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 前言 由于寫(xiě)的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時(shí)間才會(huì)更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號(hào):Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡(jiǎn)單 注解就這么簡(jiǎn)單 Druid數(shù)據(jù)庫(kù)連接池...

    KevinYan 評(píng)論0 收藏0
  • ThreadLocal就是這么簡(jiǎn)單

    摘要:簡(jiǎn)要言之往中填充的變量屬于當(dāng)前線程,該變量對(duì)其他線程而言是隔離的。在辦理時(shí)又告訴機(jī)構(gòu)來(lái),把我的身份證房產(chǎn)證學(xué)生證通通給他。 前言 今天要研究的是ThreadLocal,這個(gè)我在一年前學(xué)習(xí)JavaWeb基礎(chǔ)的時(shí)候接觸過(guò)一次,當(dāng)時(shí)在baidu搜出來(lái)的第一篇博文ThreadLocal,在評(píng)論下很多開(kāi)發(fā)者認(rèn)為那博主理解錯(cuò)誤,給出了很多有關(guān)的鏈接來(lái)指正(可原博主可能沒(méi)上博客了,一直沒(méi)做修改)。我...

    zhouzhou 評(píng)論0 收藏0
  • Java 學(xué)習(xí)路線之四個(gè)階段

    摘要:寫(xiě)這篇總結(jié),主要是記錄下自己的學(xué)習(xí)經(jīng)歷,算是自己對(duì)知識(shí)的一個(gè)回顧。這個(gè)階段學(xué)習(xí)的時(shí)候,要學(xué)會(huì)使用開(kāi)發(fā)工具,比如或者來(lái)學(xué)習(xí)。這個(gè)階段需要自己對(duì)自己有很強(qiáng)的自律去學(xué)習(xí),不要看了一半就放棄了。 showImg(https://segmentfault.com/img/bVbaNtw?w=1232&h=822); 寫(xiě)這篇總結(jié),主要是記錄下自己的學(xué)習(xí)經(jīng)歷,算是自己對(duì)知識(shí)的一個(gè)回顧。也給想要學(xué)習(xí) ...

    fredshare 評(píng)論0 收藏0
  • Java 學(xué)習(xí)路線之四個(gè)階段

    摘要:寫(xiě)這篇總結(jié),主要是記錄下自己的學(xué)習(xí)經(jīng)歷,算是自己對(duì)知識(shí)的一個(gè)回顧。這個(gè)階段學(xué)習(xí)的時(shí)候,要學(xué)會(huì)使用開(kāi)發(fā)工具,比如或者來(lái)學(xué)習(xí)。這個(gè)階段需要自己對(duì)自己有很強(qiáng)的自律去學(xué)習(xí),不要看了一半就放棄了。 showImg(https://segmentfault.com/img/bVbaNtw?w=1232&h=822); 寫(xiě)這篇總結(jié),主要是記錄下自己的學(xué)習(xí)經(jīng)歷,算是自己對(duì)知識(shí)的一個(gè)回顧。也給想要學(xué)習(xí) ...

    CNZPH 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<