AOP基础学习(二)

来源:互联网 发布:退火算法实例matlab 编辑:程序博客网 时间:2024/05/22 10:54

声明式事务管理

事务:保护原子性业务操作。保证这个操作一次完成,或者在出现故障时候回退。不能出现中间状态。


程序控制事务

    try{        开启事务        事务业务操作        事务业务操作        提交事务    }catch(Exception e){        回滚事务    }finally{        释放资源    }

Spring 利用 AOP 技术实现了 声明式事务处理。无需编程即可控制程序中的事务。只需要添加 事务注解即可!大大简化了事务程序开发。
使用声明式事务:

    @Transaction    public Object 业务方法(){        业务过程        添加数据        删除数据        修改数据    }//基本规则:业务方法的整体看成一个事务,如果业务方法正常结束(没有异常),则业务完整提交。如果业务过程抛出任何异常,则业务过程整体回滚,回滚到业务方法运行之前的情况。//案例:public void deleteAll(id1,id2,id3,id4){    }//接口方法void deleteAll(String... noteId);@Transactionalvoid deleteAll(String... noteId){    noteId 就是数组}//变长参数就是数组,String... String[] 一样//变长参数只能用在最后一个参数,只能使用一次

声明事务特性

    /*     * 只读属性     */    @Transactional(readOnly = true)    public List<String,Object>{        listNotebooks(String userId){            //...        }    }

事务的隔离

    @Transactional(readOnly = true,isolation=Isolation.DEFAULT)

事务的隔离级别

1.isolation=Isolation.SERIALIZABLE 串行操作(一个接一个处理)不并发,数据安全性,一致性最高,性能最差(用户体验差。)
2.isolation= Isolation.REPEATABLE_READ 可重复读取,保证每次读取数据时一致的,性能不好。
3.isolation= Isolation.READ_COMMITED 可以读取已提交的数据,一般是默认级别,最常用的
4.isolation = Isolation.READ_UMCOMMITED 可以读取到没有提交的中间数据,不建议使用
一般情况下,都使用默认的隔离级别


事务的传播

/* * 业务重构! */删除用户功能    deleteUser(){  //--- 开始        deleteAll(id,id,id,id)//调用批量删除笔记事务        ```        //---提交    }批量删除笔记    deleteAll(id,id,id,id){ //---开始        完整事务    }    //---提交
原创粉丝点击