<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    斷點

    每天進步一點點!
    posts - 174, comments - 56, trackbacks - 0, articles - 21

    WebLogic JDBC-JDBC 事務

    Posted on 2010-07-25 21:18 斷點 閱讀(434) 評論(0)  編輯  收藏 所屬分類: WebLogic 10 知識

    1、當處理多個訪問相同數據的用戶時,通常可能出現三種問題:
    臟讀
    當應用程序使用了被另一個應用程序修改過的數據,而這個數據處于未提交狀態時,就會發生臟讀。第二個應用程序隨后會請求回滾被其修改的數據。第一個事務使用的數據就會
    被損壞,或者“變臟”。

    不可重復的讀
    當一個事務獲得了數據,而該數據隨后被一個單獨的事務所更改時,若第一個事務再次讀取更改后的數據,就會發生不可重復的讀。這樣,第一個事務進行了一個不可重復的讀。

    虛讀
    當事務通過某種查詢獲取了數據,另一個事務修改了部分該數據,原來的事務第二次獲取該數據時,就會發生虛讀。第一個事務現在會有不同的結果集,它可能包含虛讀。

     

    2、Java.sql.Connection接口定義的隔離級別
    TRANSACTION_NONE 說明不支持事務
    TRANSACTION_READ_UNCOMMITTED 說明在提交前一個事務可以看到另一個事務的變化。這樣臟讀、不可重復的讀和虛讀都是允許的。
    TRANSACTION_READ_COMMITTED 說明讀取未提交的數據是不允許的。這個級別仍然允許不可重復的讀和虛讀產生。
    TRANSACTION_REPEATABLE_READ 說明事務保證能夠再次讀取相同的數據而不會失敗,但虛讀仍然會出現。
    TRANSACTION_SERIALIZABLE 是最高的事務級別,它防止臟讀、不可重復的讀和虛讀。


    3、事務的隔離級別
    在J2EE中,通過java.sql.Connection接口設置事務隔離級別,這一接口為連接的隔離級別提供了getter()和setter()
    Int getTransactionIsolation() throws SQLException
    void setTransactionIsolation() throws SQLException
    Connection對象負責事務,一旦收到事務請求,事務將自動提交,因為Connection對象已定義為自動提交方式,可通過setAutoCommit(false)禁用自動提交模式
    另外java.sql.DatabaseMetaData接口為數據存儲提供支持的隔離級別查找方法:getTransactionIsolation(),supportsTransactionIsolationLevel()
    對多個庫操作的分布式事務必須在所有庫中執行同一個隔離級別,否則會出現意想不到的結果


    4、事務提交和回滾
    為了完成提交事務和回滾事務,JDBC API包括了兩個方法作為 Connection 接口的一部分。若將 Connection 對象名稱指定為 con,通過調用 con.commit(); 可以保存程序狀態;

    通過調用 con.rollback(); 可以返回到以前保存的狀態。如果數據庫實際運行操作時有錯誤發生,這兩個方法都會拋出 SQLExceptions,所以您需要在 try ... catch 塊中包裝它們。


    5、批處理和事務
    缺省情況下,JDBC 驅動程序運行在被稱為自動提交的模式下,可禁用自動提交模式
    con.setAutoCommit(false);
    批處理操作中通過在一次單獨的操作(或批處理)中執行多個數據庫更新操作
    {con.setAutoCommit(false) ;
    Statement stmt = connection.createStatement() ; stmt.addBatch("INSERT INTO people VALUES('Joe Jackson', 0.325, 25, 105) ; stmt.addBatch("INSERT INTO people

    VALUES('Jim Jackson', 0.349, 18, 99) ; stmt.addBatch("INSERT INTO people VALUES('Jack Jackson', 0.295, 15, 84) ;
    int[] updateCounts = stmt.executeBatch() ; con.commit() ;

    主站蜘蛛池模板: 成年私人影院免费视频网站| 成人免费的性色视频| 国产无遮挡色视频免费视频| 亚洲剧情在线观看| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 亚洲五月丁香综合视频| 色播精品免费小视频| 亚洲一级视频在线观看| 精品久久久久久久久免费影院| 亚洲欧洲日本精品| 欧美三级在线电影免费| 亚洲精品无码一区二区| 国产一级淫片视频免费看| 美女被免费网站视频在线| 亚洲一级特黄大片无码毛片| WWW国产成人免费观看视频| 亚洲精品亚洲人成人网| 日本免费中文字幕| 亚洲国产精品日韩在线观看| 好男人看视频免费2019中文| 国产亚洲欧美日韩亚洲中文色| 亚洲成a人片在线观看久| 国产免费一级高清淫曰本片| 亚洲av永久无码精品古装片| 免费成人激情视频| 日本系列1页亚洲系列| 亚洲午夜国产精品无码| 69av免费观看| 国产亚洲精彩视频| 国产日韩亚洲大尺度高清| 57pao国产成视频免费播放| 欧美日韩亚洲精品| 亚洲精品中文字幕乱码三区 | 99久久精品日本一区二区免费| 亚洲精品亚洲人成在线| 亚洲一级特黄大片在线观看| 国产成人免费高清激情明星| 污视频网站在线免费看| 久久亚洲AV成人出白浆无码国产| 国产男女猛烈无遮挡免费网站| 国产免费一区二区视频|