posts - 28,  comments - 15,  trackbacks - 0

                   JDBC3.0(JDK4.0),引入了一個新特性Savepoint。我們知道,在JDBC2.0中的事務(wù)支持讓開發(fā)者可以控制對數(shù)據(jù)的并發(fā)訪問,從而保證數(shù)據(jù)的一致性。但有時候我們需要對事務(wù)多一點(diǎn)的控制,而不是在當(dāng)前的事務(wù)中簡單地對每一個改變進(jìn)行回滾。在 JDBC 3.0 下,我們可以通過 Savepoint 獲得這種控制。 Savepoint 接口允許您將事務(wù)分割為各個邏輯斷點(diǎn),以控制有多少事務(wù)需要回滾。下圖將說明如何在事務(wù)中運(yùn)用 Savepoint

          JDBC下使用Savepoint

          示例代碼:

          conn.setAutoCommit(false);
          // Set a conservative transaction isolation level.
          conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
          Statement stmt 
          = conn.createStatement();
          int rows = stmt.executeUpdate(    "INSERT INTO authors " + 
                          
          '(first_name, last_name) VALUES " +
                          '('Lewis''Carroll')");
          // Set a named savepoint.
          Savepoint svpt = conn.setSavepoint("NewAuthor");
          // 
          rows = stmt.executeUpdate(    "UPDATE authors set type = 'fiction' " +
                          
          "WHERE last_name = 'Carroll'");
          // 
          conn.rollback(svpt);
          // 
          // The author has been added, but not updated.
          conn.commit();

              

          示例結(jié)果就是,insert語句將被執(zhí)行,update語句未執(zhí)行,其被回滾了。

          Hibernate下使用Savepoint

          示例:

          Session s = sf.openSession();   
          Transaction tx 
          = s.beginTransaction();   
            
          User u1 
          = new User();u1.setId(1);u1.setName("u1");   
          s.save(u1);   
            
          Savepoint savepoint1 
          = s.connection().setSavepoint();   
          User u2 
          = new User();u2.setId(2);u2.setName("u2");   
          s.save(u2);   
           s.flush();

          s.connection().rollback(savepoint1);   
          //s.connection().releaseSavepoint(savepoint1);   
            
          tx.commit();  

           

          SpringSavepoint的支持

           

          posted on 2012-01-30 11:36 zhangxl 閱讀(2538) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          <2012年1月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(1)

          隨筆分類(17)

          隨筆檔案(28)

          文章分類(30)

          文章檔案(30)

          相冊

          收藏夾(2)

          hibernate

          java基礎(chǔ)

          mysql

          xml

          關(guān)注

          壓力測試

          算法

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 96550
          • 排名 - 601

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永春县| 新郑市| 兴和县| 永顺县| 新营市| 永济市| 亚东县| 兴文县| 栾城县| 大城县| 肥乡县| 大埔县| 佛冈县| 道孚县| 博白县| 修武县| 舟山市| 神池县| 黔西县| 陵水| 宝坻区| 左权县| 正宁县| 桂平市| 农安县| 南部县| 金山区| 盐亭县| 赤峰市| 德庆县| 武乡县| 偃师市| 南澳县| 青海省| 将乐县| 华安县| 渑池县| 新余市| 临邑县| 应城市| 栾川县|