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

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

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

    紙飛機

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      22 隨筆 :: 28 文章 :: 30 評論 :: 0 Trackbacks
    轉自:http://blog.csdn.net/sunyadongwanghbjm/archive/2007/08/20/1751518.aspx
    什么是事務:
    首先,說說什么事務。我認為事務,就是一組操作數據庫的動作集合。
    事務是現代數據庫理論中的核心概念之一。如果一組處理步驟或者全部發生或者一步也不執行,我們稱該組處理步驟為一個事務。當所有的步驟像一個操作一樣被完整地執行,我們稱該事務被提交。由于其中的一部分或多步執行失敗,導致沒有步驟被提交,則事務必須回滾到最初的系統狀態。
    事務必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性(isolation)和持久性(durability)的縮寫。事務的原子性表示事務執行過程中的任何失敗都將導致事務所做的任何修改失效。一致性表示當事務執行失敗時,所有被該事務影響的數據都應該恢復到事務執行前的狀態。隔離性表示在事務執行過程中對數據的修改,在事務提交之前對其他事務不可見。持久性表示當系統或介質發生故障時,確保已提交事務的更新不能丟失。持久性通過數據庫備份和恢復來保證。

    Java中的事務處理
    一般J2EE服務器支持三種類型的事務管理。即:JDBC事務,JTA事務,容器管理事務。
    最好不要在程序中同時使用上述三種事務類型;并且,事務要在盡可能短的時間內完成,不要在不同方法中實現事務的使用。下面舉兩個例子說明JDBC及JTA事務,容器管理事務是在特定的框架中實現的(如:Spring的事務管理)
    1. JDBC事務
    public String delete(String id) {
    String ID 
    = id;
     db 
    = new getConnection();
     Connection con 
    = db.getConnection();
     
    try {
    con.setAutoCommit(
    false);
    db.executeUpdate(
    "delete from helloworld where ID=" + ID); //更新操作1
      db.executeUpdate("delete from helloworld _book where ID=" + ID); //更新操作2
      db.executeUpdate("delete from helloworld_user where ID=" + ID); //更新操作3
      con.commit();//提交JDBC事務
      con.setAutoCommit(true); 
    db.close();
    return “success”;
     }

     
    catch (Exception e) {
      con.rollBack();
    //回滾JDBC事務
      e.printStackTrace();
    db.close();
    return “fail”;
      }

    }

     
    如上例:更新操作1,2,3只有當三步操作都成功完成才進行提交,否則回滾已經進行的操作。這樣,保證了數據的完整性,不會因為突然斷電等特殊情況導致的數據錯誤。
     
    2.JTA事務
    JTA是J2EE事務服務的解決方案、描述了J2EE模型事務接口。JTA具有三個主要的接口:UserTransaction、TransactionManager、Transaction接口。這些接口共享公共的事務操作,如:commit()、rollback()。同時各自也有自己的操作。舉例說明:
     
    public String delete(String id) {
     String ID 
    = id;
     db 
    = new getConnection();
     db.getConnection();
     UserTransaction transaction 
    = sessionContext.getUserTransaction();//獲得JTA事務
     try {
      transaction.begin(); 
    //開始JTA事務
      db.executeUpdate("delete from helloworld where ID=" + ID);
      db.executeUpdate(
    "delete from helloworld _book where ID=" + ID);
      db.executeUpdate(
    "delete from helloworld _user where ID=" + ID);
      transaction.commit(); 
    //提交JTA事務
      db.close();
      
    return”success”;
     }

     
    catch (Exception e) {
      
    try {
       transaction.rollback();
    //事務回滾
      }

      
    catch (Exception e) {
       e.printStackTrace();
      }

      exc.printStackTrace();
      db.close();
      
    return “fail”;
     }

    }
     
    3.容器事務管理
    在Spring、Hibernate等框架中都有各自的事務管理功能。雖然表現形式有些差別,但都是在JAVA事務管理的基礎上實現的。這里不進行介紹。
    posted on 2010-01-18 16:55 紙飛機 閱讀(771) 評論(0)  編輯  收藏 所屬分類: Spring

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 日本亚洲免费无线码| 亚洲伊人久久综合中文成人网| 亚洲人成网站色在线观看| yy6080久久亚洲精品| 两个人看的www免费| 亚洲国产综合精品| 亚洲国产精品一区二区第一页免| 精品国产污污免费网站| 亚洲 欧洲 视频 伦小说| 国产成人亚洲精品91专区手机| 67194国产精品免费观看| 日韩欧美亚洲国产精品字幕久久久| 亚洲精品无码久久千人斩| 又粗又大又黑又长的免费视频| 成人午夜免费视频| 亚洲三级在线播放| 亚洲码国产精品高潮在线| 国产美女a做受大片免费| 色欲A∨无码蜜臀AV免费播| 直接进入免费看黄的网站| 78成人精品电影在线播放日韩精品电影一区亚洲 | 久久免费线看线看| 亚洲日韩国产二区无码| 亚洲色偷偷偷鲁综合| 在线jyzzjyzz免费视频| 久久免费线看线看| 日韩免费高清一级毛片| 亚洲成a人片在线观看中文!!!| 久久亚洲2019中文字幕| 日韩激情无码免费毛片| 18禁美女黄网站色大片免费观看 | 国产午夜无码精品免费看| 国产精品观看在线亚洲人成网| 亚洲精品免费在线视频| 伊人久久大香线蕉亚洲| 国产三级免费电影| 在线观看成人免费视频| 国产在线观看免费观看不卡| 一级毛片成人免费看免费不卡| eeuss影院www天堂免费| 亚洲成aⅴ人片久青草影院按摩|