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

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

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

    Spring事務配置筆記(實現不同Service間調用事務)

    一、關鍵配置示例:
    <bean id="sessionFactory"
            class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            
    <property name="dataSource">
                
    <ref local="dataSource" />
            
    </property>
        
            
    <!-- bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/-->
        
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            
    <property name="sessionFactory">
                
    <ref local="sessionFactory" />
            
    </property>
        
    </bean>

        
    <!-- Hibernate Transaction Interceptor Definition -->
        
    <bean id="hibernateTransactionInterceptor"
            class
    ="org.springframework.transaction.interceptor.TransactionInterceptor"
            parent
    ="transactionIntercetorTemplate">
            
    <property name="transactionManager">
                
    <bean id="hibernateTransactionManager"
                    class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
                    
    <property name="sessionFactory">
                        
    <ref bean="sessionFactory" />
                    
    </property>
                
    </bean>
            
    </property>
        
    </bean>

        
    <!-- Transction Intercetor's Template -->
        
    <bean id="transactionIntercetorTemplate" abstract="true">
            
    <property name="transactionAttributes">
                
    <props>
                    
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
                    
    <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
                    
    <prop key="check*">PROPAGATION_REQUIRED,readOnly</prop>
                    
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
                    
    <prop key="update*">PROPAGATION_REQUIRED</prop>
                    
    <prop key="delete*">PROPAGATION_REQUIRED,-BussException</prop>
                    
    <prop key="*">PROPAGATION_REQUIRED</prop>
                
    </props>
            
    </property>
        
    </bean>

        
    <!-- 定義自動代理生成器-->
        
    <bean id="autoProxyCreator"
            class
    ="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
            
    <property name="interceptorNames">
                
    <list>
                    
    <idref bean="hibernateTransactionInterceptor" />
                    
    <idref bean="jdbcTransactionInterceptor" />
                
    </list>
            
    </property>
            
    <property name="beanNames">
                
    <value>*Service</value> 
                
    <!--list>
                    <idref bean="bookService" />                                        
                </list
    -->
                
    <!--添加Service bean-->
            
    </property>
        
    </bean>
        
    <bean id="hibernateDaoTemplate" abstract="true">
            
    <property name="sessionFactory">
                
    <ref bean="sessionFactory" />
            
    </property>
        
    </bean>
        
    <!-- Dao 定義 -->
        
    <bean id="imageDao" class="com.fbyssssite.dao.ImageDao"
            parent
    ="hibernateDaoTemplate" />
        <bean id="imageFolderDao" class="com.fbyssssite.dao.ImageFolderDao"
            parent
    ="hibernateDaoTemplate" />
        
    <!-- Service 定義 -->
        
    <bean id="imageService" class="com.fbyssssite.bo.ImageService" autowire="byName">
            
    <property name="dao" ref="imageDao"></property>
        
    </bean>    
        <bean id="imageFolderService" class="com.fbyssssite.bo.ImageFolderService" autowire="byName">
            
    <property name="dao" ref="imageFolderDao"></property>
        
    </bean>    

    二、測試代碼:  

    public void delete(Object entity,IBaseUser user) throws BussException {
       
    super.delete(entity, user);
       ImageFolder folder 
    = (ImageFolder)entity;
       String folderId 
    = folder.getId();   
       IImageService imageService  
    = ServiceFactory.getImageService();
       imageService.deleteAllInFolder(folderId,user);   
      }

      
    public void deleteAllInFolder(String id,IBaseUser sysUser) throws BussException {(來源:www.iocblog.net)
       log.info(
    "刪除圖片夾'"+id+"'中的圖片...");
       
    throw new BussException(1,"臨時測試:測試事務是否生效的異常。測試完畢后刪除此語句。",log);
       
    /*
       StringBuffer sql = new StringBuffer("delete ");
       sql.append("from ");
       sql.append(getEntityClassName());
       SqlBuilder sqlBuilder  = SqlBuilder.getInstance();
       sqlBuilder.appendWhereCondition(sql, "folderId='"+id+"'");
       bulkUpdate(sql.toString(), sysUser);
       
    */
       
      }


    三、測試效果:
    拋出BussException之后,imageFolder實體并沒有被刪除,而是回滾了。
    四、注意事項:
    1.其中的 BussException是一個CheckedException(繼承自Exception),這里不過是一個例子,如果其他方法需要同樣的方式處理事務,也要加上-BussException,否則不能回滾;如果是一個UnCheckedException,就不需要在這里配置,默認就會回滾。
    2.如果采用MySQL,show table status可以查看表的ENGINE類型,MyISAM是不支持事務的,如果需要事務,應該改成InnoDB:alter table [tablename] engine = InnoDB;

    posted on 2008-04-29 11:58 劉錚 閱讀(830) 評論(0)  編輯  收藏 所屬分類: Spring

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    留言簿(1)

    文章分類(141)

    文章檔案(147)

    搜索

    最新評論

    主站蜘蛛池模板: 一级做a爰全过程免费视频毛片 | 黄床大片免费30分钟国产精品| 在线免费视频一区二区| 亚洲黄色在线播放| 3d动漫精品啪啪一区二区免费| 亚洲最大的成网4438| 91高清免费国产自产拍2021| 337p欧洲亚洲大胆艺术| 7723日本高清完整版免费| 亚洲人成网网址在线看| 在线观看人成网站深夜免费| 国产成人高清亚洲一区久久| 亚洲性日韩精品国产一区二区| 久久av免费天堂小草播放| 亚洲AV无码一区二区乱子伦 | 亚洲中文字幕AV每天更新| 大学生a级毛片免费观看| 猫咪www免费人成网站| 中文亚洲AV片在线观看不卡 | 中文字幕影片免费在线观看| 亚洲人成电影网站久久| 国产免费观看黄AV片| 一区二区三区免费视频网站| 久久久久久a亚洲欧洲aⅴ| 无码人妻精品中文字幕免费| 亚洲成年人电影网站| 永久黄网站色视频免费直播| 免费无码一区二区| 亚洲va久久久噜噜噜久久 | 一区二区三区免费精品视频 | 亚洲高清国产拍精品26U| 黄+色+性+人免费| 美女隐私免费视频看| 日本红怡院亚洲红怡院最新| 黄页网站在线观看免费高清| 野花视频在线官网免费1| 亚洲一区二区三区首页| 国产无遮挡吃胸膜奶免费看视频| 大地资源在线资源免费观看| 久久久国产亚洲精品| 亚洲啪啪AV无码片|