前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基础上稍微做一点点的进阶:多数据的事物处理.文章内容主要包含两方面: 1.单表多数据的事物处理 2.多库/多表多数据的事物处理 这两种都是企业级开发中常见的需求,有一定的类似,在处理的方法与技巧上又各有不同,在进入文章前,先做一些准备工作,因为后面会用到多表的插入事物管理,前面的文章建立了一个Student相关…
前言 有些日子没写博客了,主要原因一个是工作,另一个就是健身,因为我们不仅需要努力工作,也需要有健康的身体嘛. 那有看LZ博客的网友朋友们放心,LZ博客还是会继续保持更新,只是最近两三个月LZ写博客相对会慢一些,博客的内容也会更偏向于实战一些,主要是对于工作中遇到一些比较实际性的问题进行总结与研究,并整理成文与网友朋友们分享. 灵感来源于生活,灵感也来源于工作,今天LZ博文的内容就是MyBatis与Spring事物集成的问题,后面的文章写作宗旨就是尽量写得详细点,把东西能给网友朋友们说清楚,OK…
前言 前一篇文章<MyBatis5:MyBatis集成Spring事务管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事务的做法,本文的目的是在这个的基础上稍微做一点点的进阶:多数据的事务处理.文章内容主要包含两方面: 1.单表多数据的事务处理 2.多库/多表多数据的事务处理 这两种都是企业级开发中常见的需求,有一定的类似,在处理的方法与技巧上又各有不同,在进入文章前,先做一些准备工作,因为后面会用到多表的插入事务管理,前面的文章建立了一个Student相关…
前言 有些日子没写博客了,主要原因一个是工作,另一个就是健身,因为我们不仅需要努力工作,也需要有健康的身体嘛. 那有看LZ博客的网友朋友们放心,LZ博客还是会继续保持更新,只是最近两三个月LZ写博客相对会慢一些,博客的内容也会更偏向于实战一些,主要是对于工作中遇到一些比较实际性的问题进行总结与研究,并整理成文与网友朋友们分享. 灵感来源于生活,灵感也来源于工作,今天LZ博文的内容就是MyBatis与Spring事物集成的问题,后面的文章写作宗旨就是尽量写得详细点,把东西能给网友朋友们说清楚,OK…
什么是事物 事物是访问数据库的一个操作序列,数据库应用系统通过事物集来完成对数据库的存取.事物的正确执行使得数据库从一种状态转换为另一种状态. 事物必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isolation).持久性(durability)的缩写,这四种状态的意思是: 1.原子性 即不可分割,事物要么全部被执行,要么全部不执行.如果事物的所有子事物全部提交成功,则所有的数据库操作被提交,数据库状态发生变化:如果…
单独使用MyBatis对事务进行管理 前面MyBatis的文章有写过相关内容,这里继续写一个最简单的Demo,算是复习一下之前MyBatis的内容吧,先是建表,建立一个简单的Student表: 1 2 3 4 5 6 create table student (     student_id    int            auto_increment,     student_name  varchar(20)    not null,     primary key(student_id…
前一篇文章复习了MyBatis的基本使用以及使用Spring管理MyBatis的事务的做法,本文的目的是在这个的基础上稍微做一点点的进阶:多数据的事务处理.文章内容主要包含两方面: 1.单表多数据的事务处理 2.多库/多表多数据的事务处理 这两种都是企业级开发中常见的需求,有一定的类似,在处理的方法与技巧上又各有不同,在进入文章前,先做一些准备工作,因为后面会用到多表的插入事务管理,前面的文章建立了一个Student相关表及类,这里再建立一个Teacher相关的表及类.第一步是建立一张Teach…
事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并发执行的事物之间互不干扰 4.持久性:一个事物一旦提交,它对数据库的改变就是永久的 五个隔离级别 1.default:默认的事务隔离级别,跟具体的数据有关,mysql默认的事务隔离级别是repeatable_read 2.read_uncommitted: 读未提交,一个事务可以感知或者操作另外一个…
今天在做项目的时候发现配置的spring 事物管理没起到作用.可是配置又是依据官网配置的,不可能会错.最后发现使mysql的问题 普通情况下,mysql会默认提供多种存储引擎,你能够通过以下的查看: 你要看某个表用了什么引擎(在显示结果里參数engine后面的就表示该表当前用的存储引擎): mysql> show create table 表名; 这时候假设ENGINE=MyISAM AUTO的话,那么恭喜你,原因找到了 MyISAM管理非事务表.它提供快速存储和检索,以及全文搜索能力.MyIS…
模拟锁情况无效 1.创建一个表 SET NAMES utf8mb4; ; DROP TABLE IF EXISTS `demo`; CREATE TABLE `demo` ( `id` ) NOT NULL AUTO_INCREMENT, `product_name` ) DEFAULT NULL, `stock_number` ) DEFAULT NULL, PRIMARY KEY (`id`), KEY `index_name` (`product_name`) ) ENGINE DEFAU…
一.事物1.什么是事物 事物指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事物的特性 原子性:事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发生 一致性:事物前后数据的完整性必须保持一致 隔离性:指多个用户并发访问数据库时,一个用户的事物不能被其他用户的事物所干扰,多个并发事物之间数据要相互隔离. 持久性:一个事物一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响. 二.事物的API介绍 Spring事物管理高层抽象主要包括…
1.为什么mybatis要去集成spring?===>简单来说就是为了让spring 来帮我们管理事务!!如果没有spring去帮助管理事务,那么需要我们自己去手动去维护事务,例如:发生异常需要回滚,正常情况去提交事务.这就是意义的所在 2.…
首先spring并不直接管理事物,而是提供了多种事物管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现. Spring管理事物的接口是org.springframework.transaction.PlatformTransactionManager,通过这个接口Spring为各个平台提供了相应的事物管理器,所以Spring事务管理的一个优点就是为不同的事务API提供一致的编程模型,如JTA.JDBC.Hibernate.JPA. 我这里主…
        在Spring事务管理中通过TransactionProxyFactoryBean配置事务信息,此类通过3个重要接口完成事务的配置及相关操作,分别是PlatformTransactionManager.TransactionDefinition和TransactionStatus.其中TransactionDefinition用于描述事务的隔离级别.超时时间.是否为只读事务和事务传播规则等控制事务具体行为的事务属性,这些属性可以通过XML配置或注解描述提供,也可以通过手工编程的方…
示例:模拟实现转账操作,"A"转给"B"1000,"A"少1000而"B"多一千. 一.转账环境搭建 1.xml配置文件 2.UserDao类 二.未进行事物管理 为进行事物管理会出现问题.如果执行少钱操作后,还没执行多钱操作发生异常,数据库中只有A少钱了,而B没有多钱.应添加事物个管理,出现异常进行回滚操作. 三.进行事物管理 1.导入与事物管理有关的约束 2.配置事物管理器 DataSourceTransactionMan…
Spring AOP : Pointcut表达式: designators-指示器 wildcards-通配符 operators-操作符 wildcards: * -- 匹配任意数量的字符 + -- 匹配制定类及其子类 ..-- 一般用于匹配任意数的子包或参数 operator: && || ! Wildcards(通配符) * 匹配任意数量的字符 + 匹配指定类及其子类 .. 一般用于匹配任意数的子包或参数 Pointcut :切面表达式 designators:指示器,描述通过什么方…
第一 创建一个测试实体 public class Order { private int id; private String orderName; public Order(String orderName) { this.orderName = orderName; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getOrderName() { ret…
接下来我们重点来学习spring中的事务管理 接下来我们通过代码来实现 spring实现事物我们采用aop的方式来实现 获得连接和手动设置事物相当于@before标注的前置通知,conn.commit()相当于@AfterReturn通知,conn,close相当于@After,这样我们就可以使用spring的aop来实现事物的管理 我们采用基于xml的方式来实现 我们实现用户买书的功能,一次用户只能买一本书,买书的时候有两个动作的操作,将书的库存减去一,第二更新用户的账户信息 我们采用spri…
spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. 总结如下: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. DataSource.TransactionManager这两部分…
Mybatis集成 Spring Boot中的JPA部分默认是使用的hibernate,而如果想使用Mybatis的话就需要自己做一些配置.使用方式有两种,第一种是Mybatis官方提供的 mybatis-spring-boot-starter ,第二种是类似 mybatis-spring的方式,需要自己写一些代码.但是可以更方便地控制Mybatis的各项配置. mybatis-spring-boot-starter 这种方式只需要在application.properties中配置相关的Myb…
Mybatis是java开发者非常熟悉的ORM框架,Spring集成Mybatis更是我们的日常开发姿势. 本篇主要讲Mybatis与Spring集成所做的事情,让读过本文的开发者对Mybatis和Spring的集成过程,有清晰的理解. 以mybatis-spring-2.0.2为例,工程划分六个模块. 一.annotation 模块 定义了@MapperScan和@MapperScans,用于注解方式扫描mapper接口.以及mapper扫描注册器(MapperScannerRegistrar…
不知道一些同学有没有这种疑问,为什么Mybtis中要配置dataSource,Spring的事务中也要配置dataSource?那么Mybatis和Spring事务中用的Connection是同一个吗?我们常用配置如下 <!--会话工厂 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name=&qu…
在学习Spring的事物管理之前明白先明白几个概念1什么是事物:事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用例子说明:例如银行转账,A账户转账(转200)到B账户,涉及的动作就是A账户余额减少200,B账户余额增加200,把这两个动作当成一个工作单元,要么两个动作一起完成,要么两个动作都不起用 2事物作用是什么:有四大特性,分别是:原子性(就是多个动作组成一个原子操作,要么一起完成,要么一起不起作用)一致性(就是事物完成后,数据和资源保持一致性…
1.问题 1.以前对事物的了解只是停留在声明式事物,配置xml,或使用注解,事物的传播行为也只用过REQUIRED和SUPPORTS,可以说对事物的了解很模糊. 2.直到在开发中遇到问题.. 问题的描述是: 年底跑定时任务,获取用户年底过期积分,并发送积分即将过期的消息提示: 过期积分做记录,并与积分做关联记录,涉及两表的操作: 数据量较多,循环保存,要做到每次循环都会手动提交,而不是做缓存最后提交: 事物的传播行为为默认的REQUIRED,二两个表操作涉及到了嵌套事物: So... 解决办法:…
Spring 事务属性分析什么是事物  事务管理对于企业应用而言至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性.就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到操作过程中机器突然出故障的情况,此时,事务就必须确保出故障前对账户的操作不生效,就像用户刚才完全没有使用过取款机一样,以保证用户和银行的利益都不受损失.   简单来说:事物指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败.在 Spring 中,事务是通过 Tran…
1.spring 事物管理器中事物传播机制 2.spring中事物的隔离级别 读未提交-事物未提交,另一个事物可以读取到,脏读 读已提交-事物已提交,先前读取的数据与后来读取的数据不同,不可重复读 可重复读-读取范围数据,本来可读10条,读到了11条,幻读,mysql使用mvcc解决幻读问题 串行化-不会产生任何问题,但是系统资源消耗巨大 3.spring配置事物的方式 声明式事物-会造成内部方法调用,事物失效 编程式事物 4.spring AOP的实现方式 AopProxy接口 jdk动态代理…
简介 Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现. Spring事务管理器的接口是org.springframework.transaction.PlatformTransactionManager,通过这个接口,Spring为各个平台如JDBC.Hibernate等都提供了对应的事务管理器,但是具体的实现就是各个平台自己的事情了. Spring事物管理涉及接口联系如下: Spring…
1.配置h2,连接池,MyBatis Maven依赖: <!-- spring与数据库访问集成(非Hibernate) --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.1.4.RELEASE</version> </dependency> &…
准备 首先介绍一下,我的工具使用的是STS, 需要的童鞋可以到官网下载:http://spring.io/tools/sts/all 使用STS是因为她集成了Maven进行 “包“ 管理以及自带 Web server 方便部署(不用配置啦~),个人感觉还是挺方便的.如果大家想要自己配置Tomcat,也未尝不可 :) 我下载的是压缩包的STS,下载完成后解压缩 -> 启动STS.exe ->指定 workspace ->创建Maven项目 -> 选择建立 webapp 项目. 等待片…
目的: Mybatis与spring集成 Aop整合pagehelper插件 Mybatis与spring集成 导入pom依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"…