<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 紙飛機 閱讀(778) 評論(0)  編輯  收藏 所屬分類: Spring

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


    網站導航:
     
    主站蜘蛛池模板: 无遮挡a级毛片免费看| 亚洲最大中文字幕无码网站 | 亚洲国产乱码最新视频| 久久精品一区二区免费看| 日本红怡院亚洲红怡院最新| 三年在线观看免费观看完整版中文| 亚洲精品成人久久久| 日本一区二区三区在线视频观看免费| 波多野结衣视频在线免费观看| 99亚洲乱人伦aⅴ精品| 国产成人免费全部网站| 少妇亚洲免费精品| 亚洲五月综合缴情在线观看| 光棍天堂免费手机观看在线观看| 亚洲成人午夜在线| 一二三四在线播放免费观看中文版视频 | 国产精品青草视频免费播放| 久久精品夜色噜噜亚洲A∨| 91福利免费网站在线观看| 亚洲国产精品人久久| 日韩av无码成人无码免费| 亚洲AV无码精品国产成人| 亚洲人成电影网站国产精品| 男女作爱在线播放免费网站| 亚洲天堂一区二区三区四区| 在线免费观看韩国a视频| 国产精品九九久久免费视频| 亚洲综合一区二区国产精品| 免费无码又爽又刺激聊天APP| 亚洲AⅤ男人的天堂在线观看| 国产亚洲精久久久久久无码AV| 嫩草成人永久免费观看| 亚洲第一成人在线| 亚洲高清成人一区二区三区| 久久久久久影院久久久久免费精品国产小说 | 99久久免费中文字幕精品| 亚洲无码一区二区三区| 亚洲最大AV网站在线观看| 成人免费激情视频| 国产精品免费久久久久久久久| 亚洲人成在线中文字幕|