自我學習SSM框架集成(三)

關於事務管理java

  對於數據庫的增刪改查有時候要求兩件事只能同時發生或者同時不發生,這時候就要使用事務管理spring

       作事務管理須要額外的jar才行,因此先下載aspectjweaver.jar,並添加至Idea中。數據庫

      而後再用如下兩種方法進行實現express

 

SSM事務管理的實現(一)app

經過XML配置方式:修改applicationContext,以支持AOP方式ide

<!--     <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中提到的方法 而後進行捆綁回滾

spa

SSM事務管理的實現(二)code

1、修改applicationContext添加 blog

 <tx:annotation-driven transaction-manager="transactionManager"/>

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

        <property name="dataSource" ref="dataSource" />

    </bean>

2、對爲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);

    };

 

}
 
相關文章
相關標籤/搜索