Spring-JDBC模板-事务
Spring-JDBC模板-事务
1.事务概述
什么是事务
- 逻辑上的一组操作,组成这组操作的各个单元要么全部成功要么全部失败
事务的特点ACID
- 原子性:事务不可分割(事务要么成功,要么失败)
- 一致性:事务前后数据完整性保持一致(事务操作前后数据要保持一致,不能操作一半发生数据错误)
- 隔离性:一个事务的执行不受其他事务的干扰
- 持久性:一旦事务结束,数据就持久化到数据库
如果不考虑隔离性引发安全性问题
读问题
- 脏读 :一个事务读到另一个事务未提交的数据
- 不可重复读 :一个事务读到另一个事务已经提交的update的数据,导致一个事务中多次查询结果不一致
- 虚读、幻读 :一个事务读到另一个事务已经提交的insert的数据,导致一个事务中多次查询结果不一致。
写问题
- 丢失更新
2.事务概述Spring的事务的传播行为
什么是传播行为
- 一个业务方法当中,调用另一个业务的方法
Spring中提供了七种事务的传播行为
- 保证多个操作在同一个事务中
- PROPAGATION_REQUIRED:默认值,如果A中有事务,使用A中的事务,如果A没有,创建一个新的事务,将操作包含进来
- PROPAGATION_SUPPORTS:支持事务,如果A中有事务,使用A中的事务。如果A没有事务,不使用事务。
- PROPAGATION_MANDATORY:
如果A中有事务,使用A中的事务。如果A没有事务,抛出异常。
- 保证多个操作不在同一个事务中
- PROPAGATION_REQUIRES_NEW:
如果A中有事务,将A的事务挂起(暂停),创建新事务,只包含自身操作。如果A中没有事务,创建一个新事务,包含自身操作。 - PROPAGATION_NOT_SUPPORTED:
如果A中有事务,将A的事务挂起。不使用事务管理。 - PROPAGATION_NEVER:
如果A中有事务,报异常。
- PROPAGATION_REQUIRES_NEW:
- 嵌套式事务
- PROPAGATION_NESTED:
嵌套事务,如果A中有事务,按照A的事务执行,执行完成后,设置一个保存点
执行B中的操作,如果没有异常,执行通过,如果有异常,可以选择回滚到最初始位置,也可以回滚到保存点
- PROPAGATION_NESTED:
3.Spring事务管理
添加事务
编程式事务
需要手动编写代码
步骤:
1.配置平台事务管理器
<!--配置事务管理器-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
2.Spring提供了事务管理的模板类
<!--配置事务管理模板-->
<bean id="transactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager"/>
</bean>
3.在业务层注入事务管理的模板 4.编写事务管理的代码
声明式事务
XML方式声明事务管理
1.引入aop的开发包
2.配置事务管理器
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
3.AOP的配置
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
配置
注解方式声明事务管理
配置事务管理器 开启注解事务 在业务层添加注解
Spring-JDBC模板-事务的更多相关文章
- Spring : JDBC模板, 事务和测试
JDBCTemplate简单配置:-------------------------------jdbc.properties配置----------------------------------- ...
- Spring JDBC模板类—org.springframework.jdbc.core.JdbcTemplate(转)
今天看了下Spring的源码——关于JDBC的"薄"封装,Spring 用一个Spring JDBC模板类来封装了繁琐的JDBC操作.下面仔细讲解一下Spring JDBC框架. ...
- 4-9 基于Spring JDBC的事务管理(续)
10. 基于Spring JDBC的事务管理(续) 当需要方法是事务性的,可以使用@Transactional注解,此注解可以添加在: 接口 会使得此接口的实现类的所有实现方法都是事务性的 接口中的抽 ...
- spring jdbc、事务(三)
spring整合jdbc spring中提供了一个可以操作数据库的对象(JDBCTemplate),对象封装了jdbc技术. 1.使用spring整合jdbc需要jdbc驱动.c3p0连接池.spri ...
- JAVA框架 Spring JDBC模板
一:引入jar包: 1.数据驱动jar包: dbcp依赖的包: spring的事务包和数据库包: IOC包AOP包.log4j的包: 所有的jar包: 编写测试类: 注入JdbcTemplate类,该 ...
- 【Spring实战】—— 15 Spring JDBC模板使用
前一篇通过对传统的JDBC的使用操作,可以体会到使用的繁琐与复杂,套句话说,是用了20%作了真正的工作,80%作了重复的工作. 那么通过本篇,可以了解如下的内容: 1 如何配置数据源 2 如何在spr ...
- spring+jdbc+template+transaction实现
使用spring和jdbc模板事务实现 1.创建实体类: Role package com.wbg.sjt.entity; public class Role { private int id; pr ...
- Spring 与 MyBatis 事务管理源码解析
用到mybatis便由spring和myabtis集成,SqlSessionFactoryBean(直接负责对mybatis所需环境的创建) ,配置相应的datasource到springConfig ...
- java框架之Spring(3)-JDBC模板使用&事务管理
下面内容使用到的 jar 包下载 JDBC模板使用 入门 1.导包,如要导入 Spring 的基本开发包.数据库驱动包.Spring 提供的 JDBC 模板包,如下: 2.测试: @Test publ ...
- Spring入门(三)— AOP注解、jdbc模板、事务
一.AOP注解开发 导入jar包 aop联盟包. aspectJ实现包 . spring-aop-xxx.jar . spring-aspect-xxx.jar 导入约束 aop约束 托管扩展类和被扩 ...
随机推荐
- bzoj 1854 构图 并查集
我们可以把一件装备看成一条边,两个属性看成两个点,那么这就相当于读入了一张图 当读入每一个x,y时,我们找到两个点的祖先节点,fx,fy,我们保证祖先节点在该连通块 中编号(装备属性)最大,用flag ...
- zookeeper和Kafka集群安装配置
3个虚拟机,首先关闭防火墙,在进行下面操作 一.java环境 yum list java* yum -y install java-1.8.0-openjdk* 查看Java版本 Java -vers ...
- git 基础入门操作
前言: 介绍基础的git入门级指令,虽然git指令非常多,但是实际工作中,我们会用到的非常少,小项目中甚至只需要用到2.3个.而且大部分人都会采用gui,而不是每次都打开终端然后输一长串难记的指令. ...
- Redis集群搭建笔记
系统为CentOS7,创建9001-9006 6个文件夹,复制 redis-server redis.conf 文件到6个新文件夹下 redis.conf文件配置如下: port 9001 daemo ...
- 浅谈Http1.0/Http1.1/Http2.0/Https
HTTP 1.0 → HTTP 1.1 长连接 HTTP 1.1默认支持长连接,减少了TCP连接次数,节约开销. HTTP 1.0所保持的TCP每次只能处理一个请求,最典型的就是pipline管线化模 ...
- c# 通过文件夹共享复制文件到服务器
public static string[] GetFileNames(string directoryPath, string searchName) { return Directory.GetF ...
- opencv之批量转换灰度图并保存
当图片名字有数字规律时,批量处理方式. ①srcImage 图片名字有规律 ②将srcImage文件下的图片,转换为灰度图并保存入grayImage文件夹. ③ #include <iostre ...
- ASP.NET Word转为PDF
1.首先安装 Microsoft Office 2007加载项:Microsoft Save as PDF-简体中文版:下载地址: http://download.microsoft.com/down ...
- Mac 使用ab性能测试工具
Mac 使用ab命令进行压测 1.在Mac中配置Apache ①启动Apache,打开终端 sudo apachectl -v 如下显示Apache的版本 sudo apachectl start 这 ...
- Hadoop NameNode 高可用 (High Availability) 实现解析[转]
NameNode 高可用整体架构概述 在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode ...