posts - 122,  comments - 25,  trackbacks - 0
            Spring 提供兩種事務(wù)處理方式,一種是編程式事務(wù)處理;一種是聲明式事務(wù)處理。如果需要大量的事務(wù)處理,就用聲明式事務(wù)處理,如果很少的事務(wù)處理,就用編程式。

          編程式事務(wù):
          使用TransactionTemplate進行事務(wù)處理(Spring進行commit和rollback),原型定義如下:

          public class TransactionTemplate extends DefaultTransactionDefinition implements InitializingBean {
              

              
          public Object execute(TransactionCallback action) throws TransactionException {
                  
          if (this.transactionManager instanceof CallbackPreferringPlatformTransactionManager) {
                      
          return ((CallbackPreferringPlatformTransactionManager) this.transactionManager).execute(this, action);
                  }
                  
          else {
                      TransactionStatus status 
          = this.transactionManager.getTransaction(this);
                      Object result 
          = null;
                      
          try {
                         
          // 參數(shù)TransactionCallback 是一個接口,接口中定義了doInTransaction方法
                          // 只要實現(xiàn)TransactionCallback接口,在doInTransaction()方法里編寫具體要進行事務(wù)處理的代碼即可。
                          result = action.doInTransaction(status);
                      }
                      
          catch (RuntimeException ex) {
                          
          // 回滾事務(wù)
                          rollbackOnException(status, ex);
                          
          throw ex;
                      }
                      
          catch (Error err) {
                          
          // 回滾事務(wù)
                          rollbackOnException(status, err);
                          
          throw err;
                      }
                      
          this.transactionManager.commit(status);
                      
          return result;
                  }
              }

              
          }

          實現(xiàn)TransactionCallback接口。
          transactionTemplate.execute(
              
          new TransactionCallback() {
                  
          public Object doInTransaction(TransactionStatus ts) {
                       //代碼實現(xiàn).
          }
               }

          }

          配置文件定義:
                  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                      
          <property name="dataSource">  
                          
          <ref bean="myDataSource" />  
                      
          </property> 
                  
          </bean>
                  
                  
          <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
                      
          <property name="transactionManager">  
                          
          <ref bean="transactionManager" />  
                      
          </property>
                  
          </bean>

          posted on 2008-07-28 14:37 josson 閱讀(1095) 評論(0)  編輯  收藏 所屬分類: Spring
          <2008年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 曲阳县| 高台县| 溧阳市| 铜陵市| 天峻县| 南昌市| 南川市| 六枝特区| 德令哈市| 丰宁| 阳曲县| 化德县| 平谷区| 佛教| 沅陵县| 林口县| 龙泉市| 青河县| 新平| 越西县| 绥化市| 固原市| 澄迈县| 无为县| 横山县| 阿城市| 合山市| 家居| 临泉县| 梧州市| 巴青县| 山西省| 西平县| 阳西县| 达孜县| 民和| 斗六市| 蒙城县| 浦江县| 南京市| 呼伦贝尔市|