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

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 青浦区| 大渡口区| 蓬莱市| 清镇市| 德钦县| 海丰县| 瑞金市| 定安县| 海淀区| 分宜县| 黑水县| 昌江| 兖州市| 达孜县| 科技| 宁强县| 军事| 常熟市| 磴口县| 武强县| 芷江| 招远市| 长海县| 宝坻区| 攀枝花市| 政和县| 昭苏县| 德格县| 南汇区| 思南县| 历史| 潮安县| 新民市| 始兴县| 专栏| 扎兰屯市| 尖扎县| 泗阳县| 夏河县| 隆林| 汽车|