Spring 事务管理的详细讲解及使用 您所在的位置:网站首页 spring的事务隔离与传播 Spring 事务管理的详细讲解及使用

Spring 事务管理的详细讲解及使用

2023-12-25 07:08| 来源: 网络整理| 查看: 265

文章目录 一、 Spring 事务管理简介 二、Spring 事务管理器 1、Spring 事务管理接口 1.1、 PlatformTransactionManager 接口 1.2、 TransactionDefinition 接口 1.3、 TransactionStatus 接口 2、Spring 中包含的事务管理器 三、 事务的传播行为 四、 Spring 声明式事务管理 1、Jar 包依赖 2、使用 XML 文件方式实现声明式事务管理 2.1、 搭建环境 创建项目 创建实体类 创建持久层 创建业务层 配置 Spring JDBC 2.2、 实现业务案例 修改持久层 修改业务层 创建测试类 2.3、 配置 Spring 声明式事务管理 开启 aop 命名空间 开启 tx 命名空间 配置声明式事务管理 启动 Spring 框架加载多个配置文件 2.4、 声明式事务中属性解释 name 属性 propagation 属性 isolation 属性 readonly 属性 timeout 属性 rollback-for 属性 no-rollback-for 属性 3、使用注解方式实现声明式事务管理 1、 @Transactional 介绍 2、 使用注解配置声明式事务管理的实现方式 注册事务管理驱动 使用@Transactional 实现事务控制

一、 Spring 事务管理简介

在 Spring 框架中事务管理有两种方式:一种是传统的编程式事务管理,即通过编写代码实现的事务管理;另一种是基于 AOP 技术实现的声明式事务管理。由于在 Spring 框架中,编程式事务管理很少使用,所以我们只对 Spring 的声明式事务管理进行详细讲解。 Spring 的声明式事务管理在底层采用了 AOP 技术,其最大的优点在于无须通过编程的方式管理事务,只需要在配置文件中进行相关的规则声明,就可以将事务规则应用到业务逻辑中。

Spring 实现声明式事务管理主要有两种方式:

基于 XML 文件方式的声明式事务管理。 通过 Annotation 注解方式的事务管理。 二、Spring 事务管理器

在 Spring 框架中提供了多种事务管理器来进行事务管理。Spring 的事务管理器是基于AOP 实现的。在 Spring 的事务管理器中包含了配置事务传播行为、隔离级别、只读和超时属性,这些属性提供了事务应用的方法和描述策略。 在 Java EE 项目开发经常会使用分层模式,Spring 的事务处理位于业务逻辑层,它提供了针对事务的解决方案。

1、Spring 事务管理接口

在 Spring 的事务模块(spring-tx-5.2.7.RELEASE.jar)中包括事务管理的三个核心接口。

1.1、 PlatformTransactionManager 接口

PlatformTransactionManager 接口是 Spring 提供的事务管理器接口,用于管理事务。Spring 将事务的配置详细信息封装到 TransactionDefinition 对象中,然后通过事务管理器的getTransaction() 方法获得事务的状态(TransactionStatus),并对事务进行下一步的操作。 该接口中提供了三个事务操作方法,具体如下: 在这里插入图片描述

1.2、 TransactionDefinition 接口

TransactionDefinition 接口是事务定义(描述)的对象,它提供了事务相关信息获取的方法,其中包括五个操作,具体如下: 在这里插入图片描述

1.3、 TransactionStatus 接口

TransactionStatus 接口是事务的状态,它描述了某一时间点上事务的状态信息。其中包括六个操作,具体如下: 在这里插入图片描述

2、Spring 中包含的事务管理器

在这里插入图片描述

三、 事务的传播行为

事务传播行为是指:多个含有事务的方法相互调用时,事务如何在这些方法间传播。 在这里插入图片描述

四、 Spring 声明式事务管理

Spring 声明式事务管理实现方式:

基于 XML 文件方式实现声明式事务管理。 通过 Annotation 注解方式实现声明式事务管理。 1、Jar 包依赖

Spring 核心容器模块: spring-beans-5.2.7.RELEASE.jar spring-context-5.2.7.RELEASE.jar spring-core-5.2.7.RELEASE.jar spring-expression-5.2.7.RELEASE.jar

Spring JDBC 模块: spring-jdbc-5.2.7.RELEASE.jar

Spring 事务模块: spring-tx-5.2.7.RELEASE.jar

Spring AOP 模块: spring-aop-5.2.7.RELEASE.jar

AspectJ 框架: aspectjweaver-1.9.5.jar

Spring 整合 AspectJ 框架模块: spring-aspects-5.2.7.RELEASE.jar

Commons-Loggin 日志: commons-logging-1.2.jar

数据库驱动: mysql-connector-java-5.1.48.jar

2、使用 XML 文件方式实现声明式事务管理 2.1、 搭建环境 创建项目

在这里插入图片描述

创建实体类 public class Users { private int userid; private String username; private String usersex; public int getUserid() { return userid; } public void setUserid(int userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getUsersex() { return usersex; } public void setUsersex(String usersex) { this.usersex = usersex; } @Override public String toString() { return "Users{" + "userid=" + userid + ", username='" + username + '\'' + ", usersex='" + usersex + '\'' + '}'; } } public class Orders { private int orderid; private double orderprice; public int getOrderid() { return orderid; } public void setOrderid(int orderid) { this.orderid = orderid; } public double getOrderprice() {


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有