zoukankan      html  css  js  c++  java
  • 自我学习SSM框架集成(三)

    关于事务管理

      对于数据库的增删改查有时候要求两件事只能同时发生或者同时不发生,这时候就要使用事务管理

           做事务管理需要额外的jar才行,所以先下载aspectjweaver.jar,并添加至Idea中。

          然后再用以下两种方法进行实现

    SSM事务管理的实现(一)

    通过XML配置方式:修改applicationContext,以支持AOP方式

    <!--     <tx:annotation-driven transaction-manager="transactionManager"/> -->
    
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    
            <property name="dataSource" ref="dataSource" />
    
        </bean>
    
         
    
        <tx:advice id="txadvice" transaction-manager="transactionManager">  
    
            <tx:attributes>  
    
                <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" />  
    
                <tx:method name="del*" propagation="REQUIRED" rollback-for="Exception"/>
    
                <tx:method name="edit*" propagation="REQUIRED" rollback-for="Exception" />
    
                <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>  
    
                <tx:method name="list*" propagation="REQUIRED" rollback-for="Exception"/>  
    
            </tx:attributes>  
    
        </tx:advice>  
    
            
    
        <aop:config>  
    
            <aop:pointcut id="serviceMethod" expression="execution(* com.how2java.service.*.*(..))"/>  
    
            <aop:advisor pointcut-ref="serviceMethod" advice-ref="txadvice"/>  
    
        </aop:config>       

    "execution(* com.how2java.service.*.*(..))"
    这个意思是对于service文件夹下的所有文件夹的所有类方法来搜索txadvice中提到的方法 然后进行捆绑回滚

    SSM事务管理的实现(二)

    一、修改applicationContext添加 

     <tx:annotation-driven transaction-manager="transactionManager"/>
    
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    
            <property name="dataSource" ref="dataSource" />
    
        </bean>

    二、对为addTwo方法加上事务注解

    @Service
    
    public class CategoryServiceImpl  implements CategoryService{
    
        @Autowired
    
        CategoryMapper categoryMapper;
    
         
    
        public List<Category> list(){
    
            return categoryMapper.list();
    
        }
    
     
    
        public void deleteAll() {
    
            List<Category> cs = list();
    
            for (Category c : cs) {
    
                 
    
                categoryMapper.delete(c.getId());
    
            }
    
        }
    
         
    
        @Override
    
        @Transactional(propagation=Propagation.REQUIRED,rollbackForClassName="Exception")
    
        public void addTwo() {
    
             
    
            Category c1 = new Category();
    
            c1.setName("短的名字");
    
            categoryMapper.add(c1);
    
             
    
            Category c2 = new Category();
    
            c2.setName("名字长对应字段放不下,名字长对应字段放不下,名字长对应字段放不下,名字长对应字段放不下,名字长对应字段放不下,名字长对应字段放不下,名字长对应字段放不下,名字长对应字段放不下,");
    
            categoryMapper.add(c2);
    
        };
    
     
    
    }
     
  • 相关阅读:
    [分治FFT]「CTSC2018」青蕈领主
    [边分治+线段树合并]「CTSC2018」暴力写挂
    [模板]MTT
    [模板]NTT
    [矩阵求逆+二分图匹配]BZOJ 3168 [Heoi2013]钙铁锌硒维生素
    [BZOJ1925][SDOI2010]地精部落(DP)
    [BZOJ1047][HAOI2007]理想的正方形(RMQ+DP)
    [POJ3630]Phone List (Tire)
    [POJ1193][NOI1999]内存分配(链表+模拟)
    [POJ2823]Sliding Window 滑动窗口(单调队列)
  • 原文地址:https://www.cnblogs.com/Mr-BING/p/10324514.html
Copyright © 2011-2022 走看看