zoukankan      html  css  js  c++  java
  • Spring事务管理

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

    Spring使用aop管理事务

    事务的配置步骤
    1、首先创建一个maven的spring工程,添加对spring等各项依赖包
    2、在xml文件中加入事务管理标记(AOP数据源,数据库驱动,确保已经配置好)
    3、在xml中写上注解的支持和包搜索
    4、配置事务管理员,并且设置datasource属性
    5、使用tx:annotation-driven支持注解事务模式,然后再关联事务管理员
    6、在service类中加入事务注解@Transactional
    7、查看是否产生代理

    image

    @service 业务层注解
    @repository 数据访问层注解
    @Transactional 事务代理模式注解

    实验案例
    我们做一个普通的添加学生和日子的工程,通过三层模式,我们在service层写上@Transation事务注解

    image

    通过此注解,我们得到的操作类是一个代理类,如果没有此注解,将会是一个普通的类。

    受事务管理后的代理类如果出现异常,我们插入数据将不会成功,说明经过事务代理模式,我们将不需要再考虑手动的进行事务的操作,提交和回滚都交给spring来管理。

    image

    image

    事务的高级部分

    Propagation 事务模式,事务传播类型。

    事务的模式总共有七种(我们可以在事务注解中括号内设置)
    REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
    SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
    MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。
    REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
    NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
    NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
    NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。

    事务隔离级别

    1. Dirty Reads 脏读
    2. DEFAULT (默认)
    3. READ_UNCOMMITTED (读未提交)
    4. READ_COMMITTED (读已提交)
    5. REPEATABLE_READ (可重复读)
    6. SERIALIZABLE(串行化)

    image

    只读模式的设置:

    Readonly=true
    只能读,不能写

    Readonly=false
    可以读,也可以写

    异常回滚选择:
    Rollbackfor={异常}
    什么异常我才回滚

    Norollbackfor={异常}
    什么异常我不回滚

    一般在事务代理模式中,我们只要设置什么异常我不回滚就可以了,因为凡是出现异常,会自动给我们回滚。只有设置不回滚的异常才有效。

  • 相关阅读:
    HBase-scan API 通过scan读取表中数据
    Servlet总结
    【吴节操点评】中国企业SaaS应用深谙未来者寥寥数几 两极分化将加剧
    hibernate实战笔记1---初探
    POJ
    系统服务-----Activity服务的获取getSystemService
    我的编程之路(二十) 新的环境、新的開始
    王爽《汇编语言》第2版-----2、寄存器
    更新智能开发研发进度
    libcurl实现解析(3)
  • 原文地址:https://www.cnblogs.com/kaigexuetang/p/8563143.html
Copyright © 2011-2022 走看看