南乐县住房和城乡建设局网站,广东线上营销推广方案,织梦做的网站怎么传到网上,aws wordpress区别概述
1、什么事务 事务是数据库操作最基本单元#xff0c;逻辑上一组操作#xff0c;要么都成功#xff0c;如果有一个失败所有操 作都失败
2、事务四个特性#xff08;ACID#xff09; #xff08;1#xff09;原子性 #xff08;2#xff09;一致性 #xff08;3…概述
1、什么事务 事务是数据库操作最基本单元逻辑上一组操作要么都成功如果有一个失败所有操 作都失败
2、事务四个特性ACID 1原子性 2一致性 3隔离性 4持久性
搭建项目
1、创建数据库表添加记录 2、创建 service搭建 dao完成对象创建和注入关系 1service 注入 dao在 dao 注入 JdbcTemplate在 JdbcTemplate 注入 DataSource 3、在 dao 创建两个方法多钱和少钱的方法在 service 创建方法转账的方法 Service
public class UserService { //注入 dao Autowired private UserDao userDao; //转账的方法 public void accountMoney() { //lucy 少 100 userDao.reduceMoney(); //mary 多 100 userDao.addMoney(); }
}
Repository
public class UserDaoImpl implements UserDao { Autowired private JdbcTemplate jdbcTemplate; //lucy 转账 100 给 mary //少钱 Override public void reduceMoney() { String sql update t_account set moneymoney-? where username?; jdbcTemplate.update(sql,100,lucy); } //多钱 Override public void addMoney() { String sql update t_account set moneymoney? where username?; jdbcTemplate.update(sql,100,mary); }
}
开启事务
概述 1、事务添加到 JavaEE 三层结构里面 Service 层业务逻辑层 2、在 Spring 进行事务管理操作 1有两种方式
编程式事务管理 在代码中开启事务提交等太麻烦基本不用声明式事务管理常用 1基于注解方式使用 2基于 xml 配置文件方式
4、在 Spring 进行声明式事务管理底层使用 AOP 原理 5、Spring 事务管理 API 1提供一个接口代表事务管理器这个接口针对不同的框架提供不同的实现类
注解
配置
1、在 spring 配置文件配置事务管理器 !--创建事务管理器--
bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager !--注入数据源-- property namedataSource refdataSource/property
/bean 2、在 spring 配置文件开启事务注解 1在 spring 配置文件引入名称空间 tx
beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:contexthttp://www.springframework.org/schema/context xmlns:aophttp://www.springframework.org/schema/aop xmlns:txhttp://www.springframework.org/schema/tx xsi:schemaLocationhttp://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
2开启事务注解
!--开启事务注解--
tx:annotation-driven transaction-managertransactionManager/tx:annotation-driven或者 完全注解配置
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:///user_db); 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; }
}3、在 service 类上面或者 service 类里面方法上面添加事务注解 1Transactional这个注解添加到类上面也可以添加方法上面 2如果把这个注解添加类上面这个类里面所有的方法都添加事务 3如果把这个注解添加方法上面为这个方法添加事务
Service
Transactional
public class UserService{}参数
1、在 service 类上面添加注解Transactional在这个注解里面可以配置事务相关参数
2、propagation事务传播行为 1多事务方法直接进行调用这个过程中事务 是如何进行管理的
3、ioslation事务隔离级别 1事务有特性成为隔离性多事务操作之间不会产生影响。不考虑隔离性产生很多问题 2有三个读问题
脏读 一个未提交事务读取到另一个未提交事务的数据不可重复读 一个未提交事务读取到另一提交事务修改数据虚幻读 一个未提交事务读取到另一提交事务添加数据
3解决通过设置事务隔离级别解决读问题 4、timeout超时时间 1事务需要在一定时间内进行提交如果不提交进行回滚 2默认值是 -1 设置时间以秒单位进行计算
5、readOnly是否只读 1读查询操作写添加修改删除操作 2readOnly 默认值 false表示可以查询可以添加修改删除操作 3设置 readOnly 值是 true设置成 true 之后只能查询
6、rollbackFor回滚 1设置出现哪些异常进行事务回滚
7、noRollbackFor不回滚 1设置出现哪些异常不进行事务回滚
xml配置
第一步 配置事务管理器 第二步 配置通知 第三步 配置切入点和切面
!--1 创建事务管理器--
bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager !--注入数据源-- property namedataSource refdataSource/property
/bean !--2 配置通知--
tx:advice idtxadvice
!--配置事务参数--
tx:attributes !--指定哪种规则的方法上面添加事务-- tx:method nameaccountMoney propagationREQUIRED/ !--tx:method nameaccount*/--
/tx:attributes
/tx:advice !--3 配置切入点和切面--
aop:config
!--配置切入点--
aop:pointcut idpt expressionexecution(* com.atguigu.spring5.service.UserService.*(..))/
!--配置切面--
aop:advisor advice-reftxadvice pointcut-refpt/
/aop:config