Spring之事务(一)
前言
事务的基本概念
一组操作数据库的操作序列。这些操作具有原子性,要么全部执行,要么全部不执行,是一个不可分割的执行单位。
事务的特性:
- 原子性:~ ~ ~ ~ ~
- 一致性:执行事务前后数据库都处于一致的状态。如果事务提交成功,数据库更新成功,处于有效状态。如 果事务更新失败,则回滚到事务提交前状态。
- 隔离性:两个事务之间不会相互干扰。(并发事务,就是两个并发事务之间不相互干扰)
- 持久性:事务一但成功提交,数据库保存的就是数据库更新后的数据。
编程时事务:自己写的事务
声明式事务:框架对固定代码封装,通过框架实现功能,我们只需要在配置文件中进行简单的配置即可。
JDBC简述
我们通过java代码对数据库进行操作(一般是以事务提交)是调用java提供的API——JDBC,JDBC是sun公司定义的一组数据库操作的规则,各个数据库公司根据这套规则制定配套的jar包。
javaWeb中原生调用JDBC的代码太过于繁琐,所以在javaSpring框架中对JDBC进行了封装,spring提供了一个实用类——JdbcTemplate。它简化了使用 JDBC(Java 数据库连接)进行数据库操作的过程。它是一个在 Java 应用程序中使用 JDBC 访问关系型数据库的工具类,提供了很多便利的方法和模板代码,可以简化数据库访问的代码和开发工作。它支持各种主流数据库,如 Oracle、MySQL、SQL Server 等,并提供了丰富的功能,如批处理操作、事务管理、参数绑定等。
具体操作
主要叙述的是spring框架后封装的操作,因为正在学这个。前面的javaWeb的JDBC操作,等我有空了再给它补上。
一、准备工作
老规矩先加入依赖。
1、加入依赖
<!--spring jdbc Spring 持久化层支持jar包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>6.0.2</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!-- 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.15</version>
</dependency>
chatGpt是真的好用,直接搜相关依赖,然后CV就可以了。比我自己检索整理出来的依赖文件还省事儿。就是有时候容易一本正经的胡说八道,上午问Junit相关注解,他把切面的相关的注解给我了。
2、准备spring配置文件
bean.xml
<?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"
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">
<!-- 导入外部属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 配置数据源 -->
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="url" value="${jdbc.url}"/>
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password"