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);
    
        };
    
     
    
    }
     
  • 相关阅读:
    面试问题总结
    2016后半年读书系统
    java基础知识
    自动化测试的误区
    软件测试的艺术
    QTP
    软件测试的艺术读书笔记
    Jquery中$(document).ready()
    Python爬取糗事百科示例代码
    【转载】气象数据相关资源
  • 原文地址:https://www.cnblogs.com/Mr-BING/p/10324514.html
Copyright © 2011-2022 走看看