Spring--Spring5事物管理(1)

简介: Spring--Spring5事物管理(1)

五、事务管理


5.1 事务操作(事务概念)


5.1.1 什么是事物?


事物是数据库操作最基本单元,逻辑上一组操作,要么都成功要么都失败,如果有一个失败所有操作都失败


5.1.2 事物的特性(ACID)


(1)原子性(Atomicity)

一组事物要么都成功要么都失败

(2)一致性(Consistency)

操作之前和操作之后它的总量是不变的

(3)隔离性(Isolation)

即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。

两人同时去操作同一条数据,这个过程是不会产生影响的

(4)持久性(Durability)

事物提交,表中数据发生变化


5.2 事务操作(Spring 事务管理介绍)


事务添加到JavaEE三层结构里面Service层(业务逻辑层)因为是业务层对数据进行操作

在 Spring进行事务管理操作

(1)有两种方式:编程式事务管理和声明式事务管理(使用)

3、声明式事务管理

(1)基于注解方式(使用)

(2)基于xml 配置文件方式

4、在 Spring进行声明式事务管理,底层使用AOP原理

5、Spring事务管理API

(1)提供一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类

image.png


5.3 事务操作(注解声明式事务管理)


5.3.1 在spring配置文件配置事务管理器


<!--    创建事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!--        注入数据源-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>


5.3.2 在 spring 配置文件,开启事务注解


(1)在 spring 配置文件引入名称空间 tx


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
                          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--    组件扫描-->
    <context:component-scan base-package="com.caq"></context:component-scan>
    <!-- 数据库连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          destroy-method="close">
        <property name="url" value="jdbc:mysql:///user_db" />
        <property name="username" value="root" />
        <property name="password" value="root" />
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    </bean>
<!--    JdbcTemplate对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--        注入dataSource-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
<!--    创建事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!--        注入数据源-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
<!--    开启事物注解-->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
</beans>

(2)开启事务注解


<!--    开启事物注解-->
    <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>


5.3.3 在 service 类上面(或者 service 类里面方法上面)添加事务注解


@Transactional,这个注解添加到类上面,也可以添加方法上面

如果把这个注解添加类上面,这个类里面所有的方法都添加事务

如果把这个注解添加方法上面,为这个方法添加事务



相关文章
|
7月前
|
XML Java 开发者
【Spring】Spring是什么?
【Spring】Spring是什么?
【Spring】Spring是什么?
|
6月前
|
XML Java 数据格式
|
6月前
|
前端开发 Java 数据库连接
一篇告诉你什么是Spring
一篇告诉你什么是Spring
138 0
|
7月前
|
Java 测试技术 容器
初识spring
初识spring
37 0
|
7月前
|
存储 设计模式 Java
【Spring】——Spring简单 读和取(二)
【Spring】——Spring简单 读和取
67 0
【Spring】——Spring简单 读和取(二)
|
7月前
|
存储 Java 数据库
【Spring】——Spring简单 读和取(一)
【Spring】——Spring简单 读和取
85 0
【Spring】——Spring简单 读和取(一)
|
7月前
|
前端开发 Java 开发者
【Spring】 ——初识Spring
【Spring】 ——初识Spring
61 0
|
7月前
|
Java 程序员 Maven
Spring(上)
Spring(上)
44 0
|
XML Java 数据格式
|
XML 存储 Java
Spring的使用
Spring的使用
247 0
Spring的使用