Day51 Java框架 Spring4框架(三)事务 & JDBC模板

Spring的AOP的基于AspectJ的注解开发

一.开发步骤

  1. 创建项目,引入jar包
  2. 引入配置文件  applicationContext.xml
  3. 编写目标类,并配置,由Spring管理
  4. 编写切面类.并配置,由Spring管理
  5. 使用注解的AOP对象目标类进行增强
    - 在配置文件中打开注解的AOP开发

    - 在切面类上使用注解
  6. 编写测试类

二.Spring的注解的AOP的通知类型

  1. @Before                 : 前置通知
  2. @AfterReturning    : 后置通知
  3. @Around                :环绕通知
  4. @AfterThrowing      :异常抛出通知                :
  5. @After                    :最终通知
  6. 可以配置切入点注解 @Pointcut

Spring的JDBC的模板的使用

一.JDBC的模板使用的入门

  1. 创建项目,引入jar包
     - 引入基本开发包
     - 数据库驱动
     - Spring的JDBC模板的jar包
  2. 创建数据库和表
  3. 使用JDBC的模板:保存数据

二.将连接池和模板交给Spring管理

  1. 引入Spring的配置文件

  2. 使用Jdbc的模板
    - 引入spring_aop的jar包
  3. 使用开源的数据库连接池
    1. DBCP的使用
      - 引入jar包

      - 配置DBCP连接池
    2. C3P0的使用
      - 引入C3P0的jar包

      - 配置C3P0连接池
  4. 抽取配置到属性文件
    - 定义一个属性文件

    - 在Spring的配置文件中引入属性文件
       - -  第一种:

        - - 第二种:

    - 引入属性文件的值

    - 测试

三.使用JDBC模板完成CRUD的操作

  1. 保存操作
  2. 修改操作,删除操作, 同上
  3. 查询操作
    - 查询某个属性

    - 查询返回对象或集合

Spring的事务管理

一.事务概述

  1. 事务 :  逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败
  2. 事务特性  :  原子性,一致性,隔离性,持久性
  3. 不考虑隔离性引发安全性问题
    - 读问题 : 脏读,不可重复读,幻读
    - 写问题 : 丢失更新
  4. 解决读问题
    设置事务的隔离级别:
     - Read uncommitted
     - Read committed
     - Repeatable read
     - Serializable

二.Spring的事务管理的API

  1. PlatformTransactionManager 平台事务管理器
    1. 平台事务管理器 : 接口, 是Spring用于管理事务的真正的对象
      DataSourceTransactionManager  : 底层使用JDBC管理事务
      HibernateTransactionManager     :  底层使用Hibernate管理事务
  2. TransactionDefinition  事务定义
    1. 事务定义 : 用于定义事务的相关的信息, 隔离级别,超时信息,传播行为,是否只读
  3. TransactionStatus : 事务状态
    1. 事务状态: 用于记录在事务管理过程中,事务的状态的对象
  4. 事务管理的API的关系:
            Spring进行事务管理的时候,首先平台事务管理器根据事务定义信息进行事务的管理,在事务管理过程中,产生各种状态,
    将这些状态的信息记录到事务状态的对象中

三.Spring的事务的传播行为

Spring中提供了七种事务的传播行为

  1. 保证多个操作在同一个事务中
    - PROPAGATION_REQUIRED      : 默认值,如果A中有事务,使用A中的事务,如果A没有,创建一个新的事务,将操作包含进来
    - PROPAGATION_SUPPORTS    :支持事务,如果A中有事务,使用A中的事务,如果A中没有,不使用事务
    - PROPAGATION_MANDATORY  :如果A中有事务,使用A中的事务,如果A中没有,就抛出异常
  2. 保证多个操作不在同一个事务中
    - PROPAGATION_REQUIRES_NEW  :如果A中有事务,将A的事务挂起,创建新事务,只包含自身操作.如果A没有,就创建新的 .
    - PROPAGATION_NOT_SUPPORTED :如果A中有事务,也不会使用A中事务,不使用事务
    - PROPAGATION_NEVER                  :如果A中有事务,报异常
  3. 嵌套式事务
    - PROPAGATION_NESTED       :嵌套事务,如果A中有事务,按照A的事务执行,执行完成后,设置一个保存点,执行B中的操作,
    如果没有异常,执行通过 , 如果有异常,我们可以选择回滚到最初始位置,也可以回滚到保存点 .

四.Spring的事务管理

  1. 搭建Spring的事务管理的环境
  2. 创建Service的接口和实现类
  3. 创建DAO的接口和实现类
  4. 配置Service和DAO : 交给Spring管理
  5. 在DAO中编写方法
       - - 配置连接池和jdbc的模板
       - - 在DAO注入jdbc的模板:   //若DAO继承了JdbcDaoSupport这个类,可以在配置时,注入dataSource,会自动创建jdbc模板
  6. 测试

五.Spring的事务管理 :一类: 编程式事务(需要手动编写代码)

  1. 配置平台事务管理器
  2. Spring提供了事务管理的模板类
    - 配置事务的管理的模板类
  3. 在业务层注入事务管理的模板
  4. 编写事务管理的代码
  5. 测试

六.Spring的事务管理 :二类:声明式事务管理(通过配置实现) ----AOP

  1. XML方式的声明式事务管理
    1. 引入aop的开发包
    2. 配置事务管理器
    3. 配置增强
    4. AOP的配置
    5. 测试
  2. 注解方式的声明式事务管理
    1. 引入aop的开发包
    2. 配置事务管理器
    3. 开启注解事务
    4. 在业务层添加注解   @Transactional
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值