国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaWEB開發13——事務與連接池

13651657101 / 1070人閱讀

摘要:一致性一個事務中,事務前后數據的完整性必須保持一致。持久性持久性是指一個事務一旦被提交,它對數據庫中數據的改變就是永久性的,接下來即使數據庫發生故障也不應該對其有任何影響。

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

二、JDBC事務操作
默認是自動事務:
執行sql語句:executeUpdate() ---- 每執行一次executeUpdate方法 代表 事務自動提交
通過jdbc的API手動事務:
開啟事務:conn.setAutoComnmit(false);
提交事務:conn.commit();
回滾事務:conn.rollback();
注意:控制事務的connnection必須是同一個
執行sql的connection與開啟事務的connnection必須是同一個才能對事務進行控制

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

無參構造:QueryRunner runner = new QueryRunner();
無參的構造沒有將數據源(連接池)作為參數傳入QueryRunner,那么我們在使 用QueryRunner對象操作數據庫時要使用有Connection參數的方法

四、使用ThreadLocal綁定連接資源

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

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

注意:mysql數據庫默認的隔離級別
查看mysql數據庫默認的隔離級別:select @@tx_isolation
設置mysql的隔離級別:set session transaction isolation level 設置事務隔離級別

總結:

mysql的事務控制:
        開啟事務:start transaction;
        提交:commit;
        回滾:rollback;
JDBC事務控制:
        開啟事務:conn.setAutoCommit(false);
        提交:conn.commit();
        回滾:conn.rollback();
    DBUtils的事務控制 也是通過jdbc
        
    ThreadLocal:實現的是通過線程綁定的方式傳遞參數

    概念:
        事務的特性ACID
        并發問題:臟讀、不可重讀、虛讀幻讀
        解決并發:設置隔離級別
            read uncommitted
            read committed
            repeatable read (mysql默認)
            serialazable 

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72456.html

相關文章

  • Java3y文章目錄導航

    摘要:前言由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創的技術文章歡迎關注我的公眾號:Java3y Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數據庫連接池...

    KevinYan 評論0 收藏0
  • ThreadLocal就是這么簡單

    摘要:簡要言之往中填充的變量屬于當前線程,該變量對其他線程而言是隔離的。在辦理時又告訴機構來,把我的身份證房產證學生證通通給他。 前言 今天要研究的是ThreadLocal,這個我在一年前學習JavaWeb基礎的時候接觸過一次,當時在baidu搜出來的第一篇博文ThreadLocal,在評論下很多開發者認為那博主理解錯誤,給出了很多有關的鏈接來指正(可原博主可能沒上博客了,一直沒做修改)。我...

    zhouzhou 評論0 收藏0
  • Java 學習路線之四個階段

    摘要:寫這篇總結,主要是記錄下自己的學習經歷,算是自己對知識的一個回顧。這個階段學習的時候,要學會使用開發工具,比如或者來學習。這個階段需要自己對自己有很強的自律去學習,不要看了一半就放棄了。 showImg(https://segmentfault.com/img/bVbaNtw?w=1232&h=822); 寫這篇總結,主要是記錄下自己的學習經歷,算是自己對知識的一個回顧。也給想要學習 ...

    fredshare 評論0 收藏0
  • Java 學習路線之四個階段

    摘要:寫這篇總結,主要是記錄下自己的學習經歷,算是自己對知識的一個回顧。這個階段學習的時候,要學會使用開發工具,比如或者來學習。這個階段需要自己對自己有很強的自律去學習,不要看了一半就放棄了。 showImg(https://segmentfault.com/img/bVbaNtw?w=1232&h=822); 寫這篇總結,主要是記錄下自己的學習經歷,算是自己對知識的一個回顧。也給想要學習 ...

    CNZPH 評論0 收藏0

發表評論

0條評論

13651657101

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<