事务管理

spring 事务管理 1(使用spring的JdbcTemplate访问数据库)

自古美人都是妖i 提交于 2019-12-17 16:43:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 持久层和事务的关系 dao层脱离事务也能操作数据库,事务是保证dao层数据操作的完整性(即原子性、一致性、隔离性、持久性,也即所谓的 ACID) 事务可以保证一组操作要么全成功,要么全部失败,就是事务是一个不可分割的整体 使用spring 封装的jdbc访问数据库(未使用事务) 定义bean package sping.jdbc; import java.sql.SQLException; import javax.annotation.Resource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @Service(value="jdbcWithoutTM") public class JdbcWithoutTM { @Resource(name="jdbcTemplate") private

spring中的事务管理

≯℡__Kan透↙ 提交于 2019-12-17 09:39:24
关于事务 SpringWeb MVC:是一个Model-View-Controller Web框架。 模型(Model)代表数据控制器。数据的读取,插入,更新都是由模型来负责。 视图(View)是展示给用户的最终页面。视图负责将数据以用户友好的形式展现出来。 控制器(Controller)是模型,视图以及其他任何处理 HTTP 请求所必须的资源之前的中介 服务(Service): service属于业务的具体实现。所以事务本身属于service层。 在服务层通常要使用@Transactional 进行事务管理 声明式事务与编程式事务 声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。(@Transactional) 编程式事务可以达到代码块级别的事务控制,但是声明式事务最多只能实现方法级别的事务管理。 补充: @Transactional 注解应用到只会对 public 方法,进行事务管理。(如果调用其他对象 也必须的public级别的) 这里由于事务基于AOP实现的,是借助JVM动态代理机制(反射机制来进行管理的) 为什么要实现事务管理? 事务:可以是一条sql、或者一组sql或者整个程序。 最常用的原因:保证当一个方法中有一个sql执行失败,在它之前的sql操作都会被回滚,不会执行成功。 事务的特点 原子性:多条指令作为一个集体

spring aop 声明式事务管理

醉酒当歌 提交于 2019-12-17 01:57:40
一、声明式事务管理的概括 声明式事务(declarative transaction management)是 Spring 提供的对程序事务管理的方式之一。 Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中声明。用在Spring配置文件中声明式的处理事务来代替代码式的处理事务。这样的好处是,事务管理不侵入开发的组件,具体来说,业务逻辑对象就不会意识到正在事务管理之中,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在 定义文件 中重新配置即可;在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重新编译,这样维护起来极其方便。 Spring使用 AOP 来完成声明式的事务管理,因而声明式事务是以方法为单位,Spring的事务属性自然就在于描述事务应用至方法上的策略,在Spring中事务属性有以下四个参数: 1.传播行为 2. 隔离级别 3.只读提示 4.事务超时期间 二、aop声明式事务所需的jar包 1、aopalliance.jar 这个包是 AOP 联盟的 API 包,里面包含了针对面向切面的接口。(通常Spring等其它具备动态织入功能的框架依赖此包) 2、aspectjrt.jar     处理事务和AOP所需的包 3

事务和锁学习

自闭症网瘾萝莉.ら 提交于 2019-12-16 19:43:37
   为什么要使用事务?   一个经典的例子就是银行转账问题。当把钱从一个银行转到另一个银行的时候,这操作由两步完成,首先要把钱从一个银行提取出来,然后再将钱存入另一个银行。如果此时,钱已经从一个银行提取出了,但将钱存入另一个银行的过程中或之前发生异常情况,如果没有事务保护就会出现源账号中钱减少,但目标账号中的钱并没有增加的情况。   事务简介:从严格意义上讲,事务是形成一个逻辑工作单位的数据库操作的汇集。通俗的讲,事务是能以原子操作形式完成的一系列操作。   事务四个基本特性:     原子性:一个事务中所有数据库操作是一个不可分割的整体,这些操作要么全部执行,要么全部无效。     一致性: 在事务处理执行之前和之后,数据是一致的。     隔离性:一个事务对另一个事务没有影响。     持久性:一个事务一旦完成全部操作后,它对数据库操作将永久反映在数据库中。    为什么要引入锁?   多个用户同时对数据库操作会带来数据不一致的问题。   并发的副作用:     丢失更新:两个用户或多个用户同时修改数据库,其中一个用户修改破坏了另一个用户的修改结果。     脏读: 一个用户进程读取了另一个用户进程修改过但没有正式提交的数据,这时导致了数据不一样的情形发生了。     不可重复读:一个用户读取数据,另一用户读取该数据并修改,此时前一个用户在读取发现前后两次数据不一致。    

SQL SERVER 事务处理

别来无恙 提交于 2019-12-16 18:24:17
<1>.事务的概念 事务是一个不可分割的工作逻辑单元。 <2>.为什么使用事物 可以防止错误的发生。 <3>.事物的作用 要么所有的操作全部完成,要么所有操作都不执行。 <4>.什么是事物 事务是单个的工作单元 如果某一事务成功,则在该事务中进行的所有的数据更改均会提交,称为数据库中的永久组成部分。 如果事务遇到错误且必须取消或回滚,则所有数据更改均被清楚。 <5>.事务的特性 事务必须具备以下四个属性,简称ACID 属性: (1). 原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。 (2). 一致性(Consistency):当事务完成时,数据必须处于一致状态。 (3). 隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。 (4). 永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。 <6>.如何创建事务 1. T-SQL使用下列语句来管理事务: (1). 开始事务:BEGIN TRANSACTION (2). 提交事务:COMMIT TRANSACTION (3). 回滚(撤销)事务:ROLLBACK TRANSACTION 2. 一旦事务提交或回滚,则事务结束。 (1).

数据库之锁详解

一曲冷凌霜 提交于 2019-12-16 14:14:12
一、概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁定和页级锁定。 1.表级锁定(table-level) 表级别的锁定是MySQL各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻辑非常简单,带来的系统负面影响最小。所以获取锁和释放锁的速度很快。由于表级锁一次会将整个表锁定,所以可以很好的避免困扰我们的死锁问题。 当然,锁定颗粒度大所带来最大的负面影响就是出现锁定资源争用的概率也会最高,致使并发度大打折扣。 使用表级锁定的主要是MyISAM,MEMORY,CSV等一些非事务性存储引擎。 2.行级锁定(row-level) 行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的。由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小

分布式事物

只谈情不闲聊 提交于 2019-12-16 03:00:25
1、什么是分布式事务 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。 2、分布式事务的产生的原因 2.1、数据库分库分表 当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表,具体分库分表的原理在此不做解释,以后有空详细说,简单的说就是原来的一个数据库变成了多个数据库。这时候,如果一个操作既访问01库,又访问02库,而且要保证数据的一致性,那么就要用到分布式事务。 2.2、应用SOA化 所谓的SOA化,就是业务的服务化。比如原来单机支撑了整个电商网站,现在对整个网站进行拆解,分离出了订单中心、用户中心、库存中心。对于订单中心,有专门的数据库存储订单信息,用户中心也有专门的数据库存储用户信息,库存中心也会有专门的数据库存储库存信息。这时候如果要同时对订单和库存进行操作,那么就会涉及到订单数据库和库存数据库,为了保证数据一致性,就需要用到分布式事务。 以上两种情况表象不同,但是本质相同,都是因为要操作的数据库变多了! 3、事务的ACID特性 3.1、原子性(A) 所谓的原子性就是说

MySQL锁详解

◇◆丶佛笑我妖孽 提交于 2019-12-15 08:57:13
MySQL锁详解 一、概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁定和页级锁定。 1.表级锁定(table-level) 表级别的锁定是MySQL各存储引擎中最大颗粒度的锁定机制。该锁定机制最大的特点是实现逻辑非常简单,带来的系统负面影响最小。所以获取锁和释放锁的速度很快。由于表级锁一次会将整个表锁定,所以可以很好的避免困扰我们的死锁问题。 当然,锁定颗粒度大所带来最大的负面影响就是出现锁定资源争用的概率也会最高,致使并大度大打折扣。 使用表级锁定的主要是MyISAM,MEMORY,CSV等一些非事务性存储引擎。 2.行级锁定(row-level) 行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的。由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小

高并发分布式事务的实现方法及替代方案

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-15 05:32:59
这两天正在研究微服务架构中分布式事务的处理方案, 做一个小小的总结, 作为备忘. 如有错误, 欢迎指正! 概念澄清 事务补偿机制: 在事务链中的任何一个正向操作, 都必须存在一个完全符合回滚规则的可逆操作, 这个操作通常叫做rollback或者cancel. CAP理论: CAP(Consistency, Availability, Partition Tolerance), 阐述了一个分布式系统的三个主要方面, 只能同时择其二进行实现. 常见的有CP系统, AP系统. 为什么CA不行呢? 因为没有P的话, 数据一致性会出现问题, 这是任何一个一致性系统不允许出现的情况. 幂等性: 简单的说, 业务操作支持重试, 不会产生不利影响. 常见的实现方式: 为消息额外增加唯一ID. BASE(Basically avaliable, soft state, eventually consistent): 是分布式事务实现的一种理论标准. 柔性事务 vs. 刚性事务 刚性事务是指强一致性事务, 例如单机环境下遵循ACID的数据库事务, 或者分布式环境中的2PC等. 柔性事务是指遵循BASE理论的事务, 通常用在分布式环境中, 常见的实现方式有: 异步确保型, 最大努力通知型. 最佳实践 先上结论, 再分别介绍分布式事务的各种实现方式. 如果业务场景需要强一致性,

mysql-事务的使用

北慕城南 提交于 2019-12-15 00:23:45
mysql事务概念 如果一个包含多个步骤的业务操作, 被事务管理, 那么这些操作要么同时成功, 要不同时失败 事务操作 开启事务 start transition ; 回滚事务 rollback ; 提交事务 commit ; 事务提交 注意: mysql数据库中事务默认自动提交 事务提交的两种方式: 自动提交 mysql的事务自动提交 一条DML(增删改)语句会自动提交一次事务 手动提交 需要先开启事务,在提交 修改事务的默认提交方式 查看事务的默认提交方式 select @@autocommit ; 查询结果: 1代表自动提交 0代表手动提交 修改默认提交方式 set @@autocommit = 0 ; 事务的四大特征 原子性: 是不可分割的最小操作单位, 要么要么同时成功, 要么同时失败 持久性:当事务提交或回滚后,数据库会持久化的保存数据 隔离性:多个事务之间,相互独立 一致性: 事务操作前后,数据总量不变 来源: CSDN 作者: 仰望着那高处的巨人们 链接: https://blog.csdn.net/weixin_44737646/article/details/103543631