事务操作
事务概念
什么是事务
1.事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败
事务四个特性(ACID)
1.原子性(要么都成功,一个失败都失败)
2.一致性(保持一致)
3.隔离性(多事务操作不会产生影响)
4.持久性(是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的)
事务操作(搭建事务操作环境)

创建数据库,添加记录

创建service,搭建dao,完成对象创建和注入关系
service注入dao,在dao注入JdbcTemplate,在JdbcTemlate注入DataSource

进行测试

事务操作(Spring事务管理介绍)
1. 事务添加到JavaEE三层架构里面Service层(业务逻辑层)
2.在Spring进行事务管理操作
1.有两种方式,编程式事务管理和声明式事务管理(使用)
3.声明式事务管理
1.基于注解方式(使用)
2.基于xml配置文件方式
4.在Spring进行声明式事务管理,底层使用AOP
5.Spring事务管理API
1.提供了一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类
事务操作(注解声明式事务管理)
在spring配置文件配置事务管理器
<!-- 创建事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource"/> </bean>
在spring配置文件,开启事务注解
在spring配置文件引入名称空间tx
<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">
开启事务注解
<!-- 开启事务注解 --> <tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
在service类上面(获取service类里面方法上面)添加事务注解
@Transactional// 事务注解 可以添加到类上面,也可以添加方法上面
如果把这个注解添加到类上面,这个类里面所有的方法都添加事务
如果把这个注解添加方法上面,为这个方法添加事务
@Service @Transactional// 事务注解 public class UserService {
事务操作(完全注解声明式事务管理)
创建配置类,使用配置类替代xml配置文件
//开启事务配置类 @Configuration @ComponentScan(basePackages = "com.atguigu")//组件扫描 @EnableTransactionManagement //开启事务 public class TxConfig { //创建数据库连接池 @Bean public DruidDataSource getDruidDataSource(){ DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/spring5?serverTimezone=GMT"); dataSource.setUsername("root"); dataSource.setPassword("root"); return dataSource; } //创建JdbcTemplate对象 @Bean public JdbcTemplate getJdbcTemplate(DataSource dataSource){ //到ioc容器中根据类型找到dataSource JdbcTemplate jdbcTemplate = new JdbcTemplate(); //注入dataSource jdbcTemplate.setDataSource(dataSource); return jdbcTemplate; } //创建事务管理器 @Bean public DataSourceTransactionManager getDataSourceTransactionManager(DataSource dataSource){ DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(); transactionManager.setDataSource(dataSource); return transactionManager; } }

浙公网安备 33010602011771号