<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    列宿乃施于上榮兮 日月才經(jīng)于柍桭

    ………… 白駒過隙 歲月如斯 夢縈回繞 心靈之聲
    posts - 57, comments - 8, trackbacks - 0, articles - 41
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Spring中的事務(wù)應(yīng)用

    Posted on 2010-07-04 15:16 默認(rèn)為零 閱讀(152) 評論(0)  編輯  收藏 所屬分類: 技術(shù)

      Spring中的事務(wù)管理有聲明式事務(wù)和編碼式事務(wù)兩種。
      聲明式事務(wù)顧名思義就是采用聲明的方式來處理事務(wù)。是指在Spring配置文件中聲明式的處理事務(wù)來代替代碼式的處理事務(wù)。Spring使用AOP來完成聲明式的事務(wù)管理,因而聲明式事務(wù)是以方法為單位,而事務(wù)管理不侵入開發(fā)的組件的一種事務(wù)處理方式。
      而編碼式事務(wù)顯然就是通過應(yīng)用開發(fā)者的事務(wù)相關(guān)編碼行為完成事務(wù)實(shí)現(xiàn)的一種處理方式。
     
    聲明式事務(wù)

      首先定義事務(wù)代理如下:

    <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
     
    <property name="transactionManager" ref="transactionManager" />
     
    <property name="transactionAttributes">
      
    <props>
       
    <prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
       
    <prop key="remove*">PROPAGATION_REQUIRED,-Exception</prop>
       
    <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
       
    <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
      
    </props>
     
    </property>
    </bean>

      key屬性確定代理應(yīng)該給哪個(gè)方法增加事務(wù)行為。這樣的屬性最重要的部份是傳播行為。有以下選項(xiàng)可供使用:

      PROPAGATION_REQUIRED--支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就新建一個(gè)事務(wù)。這是最常見的選擇。 
      PROPAGATION_SUPPORTS--支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就以非事務(wù)方式執(zhí)行。 
      PROPAGATION_MANDATORY--支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就拋出異常。 
      PROPAGATION_REQUIRES_NEW--新建事務(wù),如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起。 
      PROPAGATION_NOT_SUPPORTED--以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起。 
      PROPAGATION_NEVER--以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù),則拋出異常。


      其次對于事務(wù)代理的引用:

    <bean id="userManager" parent="baseTransactionProxy">
      
    <property name="target">
       
    <bean class="com.alibaba.xxx.service.impl.UserManagerImpl">
        
    <property name="userDao" ref="userDao" />
        
    <property name="roleDao" ref="roleDao" />
       
    </bean>
      
    </property>
     
    </bean>

      這樣如果UserManagerImpl實(shí)現(xiàn)中如果含有save*、remove*、update*、query*的方法名,Spring會自動應(yīng)用其相應(yīng)配置的事務(wù)實(shí)現(xiàn)。

    編碼式事務(wù)

    1、TransactionTemplate的事務(wù)處理

    TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
     
    //調(diào)用transactionTemplate的execute方法進(jìn)行事務(wù)管理
    Object result = transactionTemplate.execute (
    //回調(diào)函數(shù)實(shí)現(xiàn)了TransactionCallback接口的doInTransaction方法
     new TransactionCallback() {
     
    public Object doInTransaction(TransactionStatus status) {
      
    //數(shù)據(jù)庫操作代碼
      
    //userDao.xxx();
      
    //roleDao.xxx();
      return resultObject;
     }

    }
    );


    2、JdbcTemplate的事務(wù)處理

    DefaultTransactionDefinition def = new DefaultTransactionDefinition(); 
    TransactionStatus status 
    = transactionManager.getTransaction(def); 
    try{
     JdbcTemplate jdbcTemplate 
    = new JdbcTemplate(dataSource); 
     jdbcTemplate.update(
    "insert into tbl_user_info values(xx, xx, xx)"); 
    }
     catch (DataAccessException ex) {
     transactionzManager.rollback(status); 
     
    throw ex;
    }
     finally{
     transactionManager.commit(status); 
    }
      編碼式事務(wù)還有其他編寫方式,Spring中單數(shù)據(jù)源的事務(wù)其實(shí)就是對JDBC的簡單封裝,其操作方式非常類似JDBC的事務(wù)應(yīng)用。

    主站蜘蛛池模板: 久久一区二区三区免费| 亚洲国产日韩a在线播放| 久久久免费观成人影院| 四虎成人精品在永久免费| 久久水蜜桃亚洲AV无码精品| 永久免费av无码不卡在线观看 | 免费中文字幕不卡视频| 亚洲αⅴ无码乱码在线观看性色| 国产香蕉九九久久精品免费 | 国产成人亚洲午夜电影| 四虎永久成人免费| 特级av毛片免费观看| 亚洲精品国产va在线观看蜜芽| 青娱乐在线视频免费观看| 亚洲欧洲一区二区三区| 青柠影视在线观看免费高清| 亚洲成色在线综合网站| 最近2019年免费中文字幕高清| 91午夜精品亚洲一区二区三区| 无人在线观看完整免费版视频| 亚洲AV无码一区二区一二区| 午夜亚洲国产成人不卡在线| 中文无码日韩欧免费视频| 亚洲一区二区三区四区在线观看| 国产成人免费在线| 亚洲av无码专区首页| 久久久久亚洲AV综合波多野结衣| 青青操免费在线视频| 亚洲国产av一区二区三区丶| 日韩a级毛片免费视频| 亚洲精品宾馆在线精品酒店| 国产高清免费在线| a毛片久久免费观看| 91亚洲国产成人久久精品网址| 免费的涩涩视频在线播放| 国产福利免费视频| 亚洲国产精品免费在线观看| 免费人成在线观看网站视频 | 18禁成年无码免费网站无遮挡| 免费观看四虎精品成人| 91大神亚洲影视在线|