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

          編程式事務:
          使用TransactionTemplate進行事務處理(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 {
                         
          // 參數TransactionCallback 是一個接口,接口中定義了doInTransaction方法
                          // 只要實現TransactionCallback接口,在doInTransaction()方法里編寫具體要進行事務處理的代碼即可。
                          result = action.doInTransaction(status);
                      }
                      
          catch (RuntimeException ex) {
                          
          // 回滾事務
                          rollbackOnException(status, ex);
                          
          throw ex;
                      }
                      
          catch (Error err) {
                          
          // 回滾事務
                          rollbackOnException(status, err);
                          
          throw err;
                      }
                      
          this.transactionManager.commit(status);
                      
          return result;
                  }
              }

              
          }

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

          }

          配置文件定義:
                  <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 閱讀(1093) 評論(0)  編輯  收藏 所屬分類: Spring
          <2008年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乌兰县| 高阳县| 普定县| 寿宁县| 筠连县| 长宁县| 龙门县| 信丰县| 洞头县| 手游| 太原市| 洛扎县| 定兴县| 泸州市| 河间市| 筠连县| 定襄县| 枞阳县| 卫辉市| 高雄县| 正蓝旗| 兰西县| 涡阳县| 图片| 中阳县| 太仆寺旗| 宁明县| 云梦县| 磐安县| 卢湾区| 葫芦岛市| 开化县| 应用必备| 白河县| 英德市| 稷山县| 郁南县| 普兰店市| 吴堡县| 泰州市| 秦皇岛市|