1. 程式人生 > >自我學習SSM框架集成(三)

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

nal 同時 name lis ota lba tex code 進行

關於事務管理

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

做事務管理需要額外的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);

    };

 

}
 

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