Spring 框架jdbcTemplate和事务部分的知识
Posted scanner小霸王
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 框架jdbcTemplate和事务部分的知识相关的知识,希望对你有一定的参考价值。
1.jdbcTemplate的概念
a)spring框架对jdbc进行封装,能方便实现对数据库操作
2.jdbcTemplate准备工作
a)引入相关jar包
b)spring配置文件配置数据库连接池
c)创建JdbcTemplate对象,注入DataSource
d)创建service,dao类,在dao注入JdbcTemplate对象
开启组件扫描
3JdbcTemplate进行操作数据库
a)创建实体
b)编写service和dao
ii)dao书写方式1
ii)dao书写方式2
c)编写测试类
d)补充jdbcTemplate查询对象
e)查询集合
f)批量操作(删除,插入,修改都是调用batchUpdate()方法)
Dao代码
测试类代码:
4.事务(概念)
a) 事务库操作最基本单元,逻辑上一组操作,要么都成功,要么都失败。
例子:银行转账:一方收钱,一方转钱,出现转账异常,收钱也失败。
b) 特性(ACID)
ii)原子性
要么成功要么失败
ii)一致性
操作的总量是一致的,
例如:a转账100元,b收钱100元,金额的操作总理是200元。
ii)隔离性
多事务操作不会互相影响
ii)持久性
当进行数据操作之后,数据库的数据真正发生变化
5.事务操作(搭建环境)
a) 框架图
b)Dao创建两个方法(转账100元)
c)service创建需要以下的步骤
事务:
ii)开启事务
ii)进行业务操作
ii)若无异常,提交事务
ii)若有异常,事务回滚
6.事务操作(事务介绍)
a)定义在service
b)事务管理操作(两种方式)
ii)编程式(写代码,嵌入在代码内)
ii)声明式(开发使用一般使用,比较方便)
c)声明式事务管理
ii)基于注解方式
ii)基于xml配置文件方式
d)在spring进行声明式事务管理,底层使用aop
e)spring事务管理api
ii)提供了一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类
7. 事务操作(注解声明式)
a)spring配置事务管理器
b)在配置文件中,开启事务注解(指定事务管理器)
c)service添加事务注解(可加到类上面或者方法上面)
注:@transactional可配置相关参数
ii)propagation:事务传播行为
传播行为概念:多事务方法直接进行调用,这个过程时如何进行管理;
事务方法:对数据表数据进行变化的操作(查询不是);
例子:
ii)ioslation:事务的隔离级别
事务有一个特性:隔离性,多事务操作之间不会影响,不考虑隔离性产生问题
三个问题:脏读、不可重复读、虚(幻)读
脏读:一个未提交的事务读到另一个未提交事务的数据;
例子:两个人都要操作同一条数据
为啥会读到未提交的事务的数据?
回答:
对于InndoDB引擎来说,一个事务中操作首先会写到mysql的缓冲池中,等事务提交后缓冲池的数据会写到重做日志,以此来保证事务的原子性和持久性。而脏读显然是读到了缓冲池里的数据
参考知乎回答:https://www.zhihu.com/question/453739394
不可重复读:一个未提交的事务读取到另外一个已经提交修改的事务(时一种现象,不是问题)(更新)
虚读:一个未提交的事务读取到另外一个已经提交插入的事务(插入)
解决三种现象的方法(隔离级别):
ii)timeOut:超时时间
事务在一定时间进行提交,秒为单位
ii)readOnly:是否只读
readOnly:默认值false,可增删改查,true只能查询
ii)rollbackFor:回滚
出现哪些异常进行回滚
ii)noRollbackFor:不回滚
出现哪些异常不进行回滚
8.事务操作(XML声明式)
a)事务管理器
b)配置通知
c)配置切入点和切面
d)开启事务的注解
9.事务操作(完全注解)
创建一个配置类代替XML
a)jdbc数据源创建,事务开启,组件扫描
b)创建jdbcTemplate
c)创建事务
以上是关于Spring 框架jdbcTemplate和事务部分的知识的主要内容,如果未能解决你的问题,请参考以下文章