微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

事务JDBC模板

文章目录

Spring的AOP的基于AspectJ注解开发

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

创建项目,引入jar包

在这里插入图片描述

引入配置文件

在这里插入图片描述

编写配置目标类

在这里插入图片描述


在这里插入图片描述

编写配置切面类

在这里插入图片描述


在这里插入图片描述

使用注解的AOP对象没有标类进行增强

  • 配置文件中打开注解的AOP开发

    在这里插入图片描述

  • 在切面类上使用注解

    在这里插入图片描述

Spring的注解的AOP的通知类型

@Before:前置通知

@AfterReturning:后置通知

在这里插入图片描述

@Around:环绕通知

在这里插入图片描述

@AfterThrowing:异常抛出通知

在这里插入图片描述

@After:最终通知

在这里插入图片描述

Spring的AOP的注解切入点的配置

在这里插入图片描述


Spring的JDBC的模版的使用

Spring的JDBC的模版

Spring是EE开发的一站式的框架,有EE开发的每层的解决方案。Spring对持久层也提供了解决方案:ORM模块和JDBC的模版
Spring提供了很多的模版用于简化开发

在这里插入图片描述

JDBC模版使用的入门

创建项目,引入jar包

引入基本开发包
数据库驱动
Spring的JDBC模版的jar包

在这里插入图片描述

创建数据库和表

create database spring4_day03;
use spring4_day03;
create table account(
	id int primary key auto_increment,
	name varchar(20),
	money double
);

使用JDBC的模版

在这里插入图片描述


将连接池和模版交给Spring管理

引入Spring的配置文件

在这里插入图片描述

使用Jdbc的模版


使用开源的数据库连接池

DBCP的使用

  • 引入jar包

    在这里插入图片描述

  • 配置DBCP连接池

    在这里插入图片描述

C3P0的使用

  • 引入c3p0连接池jar包

    在这里插入图片描述

  • 配置c3p0连接池

    在这里插入图片描述


抽取配置到属性文件

定义一个属性文件

在这里插入图片描述

在Spring的配置文件中引入属性文件

在这里插入图片描述

引入属性文件的值

在这里插入图片描述


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

保存操作

在这里插入图片描述

修改操作

在这里插入图片描述

删除操作

在这里插入图片描述

查询操作


Spring的事务管理

事务的回顾

事务的特性

  • 原子性:事务不可分隔
  • 一致性:事务执行前后数据完整性保持一致
  • 隔离性:一个事务的执行不应该收到其他事务的干扰
  • 持久性:一旦事务结束,数据就持久化到数据库

如果不考虑隔离性引发安全性问题

  • 读问题
    脏读:一个事务读到另一个事务未提交的数据
    不可重复读:一个事务读到另一个事务已经提交的update的数据,导致一个事务中多次查询结果不一致
    虚读,幻读:一个事务读到另一个事务已经提交的insert的数据,导致一个事务中多次查询结果不一致
  • 写问题
    丢失更新

解决读问题

设置事务的隔离级别

  1. Read uncommitted:未提交读,任何读问题解决不了
  2. Read committed:已提交读,解决脏读,但是不可重复读和虚读有可能发生
  3. Repeatable read:重复读,解决脏读和不可重复读,到那时虚读有可能发生
  4. Serializable:解决所有读问题

Spring的事务管理API

PlatformTransactionManager:平台事务管理器

平台事务管理器:接口,是Spring用于管理事务的真正的对象

  • DataSourceTransactionManager:底层使用JDBC管理事务
  • HibernateTransactionManager:底层使用Hibernate管理事务

TransactionDeFinition:事务定义信息

事务定义:用于定义事务的相关信息,隔离级别,超时信息,传播行为,是否只读

TransactionStatus:事务的状态

事务状态:用于记录在事务管理过成功,事务的状态的对象

事务管理的API的关系

Spring进行事务管理的时候,首先平台事务管理器根据事务定义信息进行事务的管理,在事务管理过程中,产生各种状态,将这些状态的信息记录到事务状态的对象中


Spring的事务的传播行为

Spring提供了期中事务的传播行为:

  • 保证多个操作在同一个事务中
    PROPAGATION_required认值,如果A中有事务,使用A中的事务,如果A中没有,创建一个新的事务,将操作包含进来
    PROPAGATION_SUPPORTS:支持事务,如果A中有事务,使用A中的事务,如果A没有事务,不使用事务
    PROPAGATION_MANDATORY:如果A中有事务,使用A中的事务。如果A没有事务,抛出异常
  • 保证多个操作不在同一个事务中
    PROPAGATION_REQUIRES_NEW:如果A中有事务,将A的事务挂起(暂停),创建新事务,只包含自身操作。如果A中没有事务,创建一个新事务,包含自身操作
    PROPAGATION_NOT_SUPPORTED:如果A中有事务,将A的事务挂起。不使用事务管理
    PROPAGATION_NEVER:如果A中有事务,报异常。
  • 嵌套式事务:
    PROPAGATION_nesTED:嵌套事务,如果A中有事务,按照A的事务执行,执行完成后,设置一个保存点,执行B中的操作,如果没有异常,执行通过,如果有异常,可以回滚到最初位置,也可以回滚到保存点

Spring的事务管理

编程式事务(需要手动编写代码

配置平台事务管理器

在这里插入图片描述

Spring提供了事务管理的模板类

在这里插入图片描述

在业务层注入事务管理的模板

在这里插入图片描述

编写事务管理的代码

在这里插入图片描述


声明式事务管理(通过配置完成)—AOP

XML方式的声明式事务管理

  • 配置事务管理器

    在这里插入图片描述

  • 配置增强

    在这里插入图片描述

注解方式的声明式业务管理

  • 配置事务管理器

    在这里插入图片描述

  • 开启注解事务

    在这里插入图片描述

  • 在业务层添加注解

    在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐