事务管理

Spring 事务管理 —— 模拟转账案例(基于注解的事务控制)

戏子无情 提交于 2020-02-03 06:55:57
domain 不变 dao: package com . fy . dao . impl ; import com . fy . dao . AccountDao ; import com . fy . domain . Account ; import org . springframework . beans . factory . annotation . Autowired ; import org . springframework . jdbc . core . BeanPropertyRowMapper ; import org . springframework . jdbc . core . JdbcTemplate ; import org . springframework . jdbc . core . support . JdbcDaoSupport ; import org . springframework . stereotype . Repository ; import java . util . List ; /** * 账户的持久层实现类 */ @Repository ( "accountDao" ) public class AccountDaoImpl /*extends JdbcDaoSupport*/ implements

MySQL--事务

二次信任 提交于 2020-02-02 09:55:24
事务的基本介绍: 概念 :如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。 操作 : 1,开启事务:start transaction; 2,回滚:rollback; 3,提交:commit; 理解 :也就是在多行sql语句中,加上一行start transaction开头,那么这多行语句就相当于一个事务。在运行时,数据是暂时性的修改,除非在末尾加上commit。如果某一行语句出现了错误,导致数据的不正确,最后一行就加rollback。 例子: ------中间那一行并没有加上注释,如果正常运行的话,将执行Tom那一行,Sam那一行不会执行。(转钱例子) MySQL数据库事务默认自动提交 事务提交的两种方式 : 1,自动提交:mysql就是自动提交的。一条DML语句会自动提交事务。 2,手动提交:oracle数据库默认是手动提交事务。需要开启事务在提交。 修改事务的提交方式 : 1,查看事务的默认提交方式:select @@autocommit; -1代表自动提交,0表示手动提交。 2,修改默认提交方式:set @@autocommit=0 事务的四大特征 :(面试经常问到) 1,原子性:是不可分割的最小单位,要么同时成功,要么同时失败。 2,持久性:当事务提交或回滚之后,数据库会持久化的保存数据。 3,隔离性:多个事务之间,相互独立。 4

蚂蚁区块链第20课 可信存证司法链从入门到实施

拥有回忆 提交于 2020-02-02 04:51:46
1. 摘要 杭州互联网法院和司法区块链平台的技术建设方都是蚂蚁金服区块链。那么,如何借助蚂蚁的技术能力和服务能力,快速对接上司法链,便于后续打通存证/维权的闭环流程。本文介绍蚂蚁区块链可信存证的业务及特点,费用及接入方法等,具有实战指导意义。 2. 蚂蚁区块链可信存证的介绍 蚂蚁区块链可信存证具备全链路可信,司法权威节点见证,安全隐私保护,一站式接入能力,全国首家法律认可的区块链存证平台。 2.1 蚂蚁区块链可信存证的4大优势 司法权威节点见证 用户数据采用分布式账本保存,由联盟节点包括钱塘公证处、上海市计算机行业协会司法鉴定所、杭州互联网法院等权威节点共同见证。 真实保障不可篡改 平台采用完全分布式架构,对用户数据加密。计算和交互均在加密后数据的多个计算节点之间独立完成,无中心控制节点,真实保障数据不可篡改。 安全合规隐私保护 保证数据最小化利用,所有计算均在加密或脱敏之后进行,最大程度地保障了个人隐私数据安全。 一站式接入 用户可以通过丰富的 API 以及 SDK 进行一站式接入,享受平台提供的全流程存证、出证服务。 2.2 蚂蚁区块链可信存证的5大应用场景 数字作品登记场景 互联网时代信息传播快、范围广,在没有预先登记的情况下,数字作品被侵权的概率很大,并且维权成本很高。对此,蚂蚁区块链可信存证提供了针对数字作品,包括图片、视频、音频、文字、代码等数字作品的所有权登记服务

Spring基于AOP的事务管理

好久不见. 提交于 2020-02-01 08:35:10
Spring基于AOP的事务管理 事务    事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务就将回到最开始的状态,仿佛一切都没发生过。例如,老生常谈的转账问题,从转出用户的总存款中扣除转账金额和增加转出用户的账户金额是一个完整的工作单元,如果只完成扣除或者增加都会导致错误,造成损失,而事务管理技术可以避免类似情况的发生,保证数据的完整性和一致性。同样在企业级应用程序开发过程中,事务管理技术也是必不可少的。   事务有四个特性:ACID 原子性(Atomicity):事务是一个原子操作,有一系列动作组成。原子性保证所有动作都完成,或者不执行任何动作。 一致性(Consistency):一旦事务完成(不论成败),系统必须确保它所建模的业务处于一致的状态。 隔离性(Isolation):可能有很多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。 持久性(Durability):一旦事务完成,无论系统发生生什么系统错误,它的结果都不会受到影响,保证能从系统崩溃中恢复过来,通常事务的结果会被写入到持久化存储器中。   Spring事务是基于面向切面编程(Aspect Oriented Programming,AOP)实现的(文中会简单讲解AOP)。Spring的事务属性分别为传播行为、隔离级别、回滚规则

Spring的事务管理

笑着哭i 提交于 2020-02-01 08:34:04
spring支持编程式事务管理和声明式事务管理两种方式。   编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。   声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。   显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。 Spring事务管理主要包括3个接口,Spring的事务主要是由他们三个共同完成的。 1

Spring中事务管理的两种方式

若如初见. 提交于 2020-02-01 08:33:16
spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。 显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。 spring支持编程式事务管理和声明式事务管理两种方式。

oracle redo undo

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-01 03:11:35
redo--> undo-->datafile insert一条记录时, 表跟undo的信息都会放进 redo 中, 在commit 或之前, redo 的信息会放进硬盘上. 故障时, redo 便可恢复那些已经commit 了的数据. redo解释: 在Oracle数据库中,执行数据修改操作后, 并不是马上写入数据文件,而是首先生成重做信息 ,并写入SGA中的一块叫LOG_BUFFER的固定区域,LOG_BUFFER的空间并不是无限大,事实上它非常小,一般设置在3~5MB左右。LOG_BUFFER有一定的触发条件,当满足触发条件后,会有相应进程将LOG_BUFFER中的内容写入一个特定类型的文件,就是传说中的联机重做日志文件。 UNDO: undo->记录更改前的一份copy,但你系统rollback时,把这份copy重新覆盖到原来的数据 redo->记录所有操作, 用于恢复 (redo records all the database transaction used for recovery) undo->记录所有的前印象, 用于回滚 (undo is used to store uncommited data infor used for rollback) redo->已递交的事务,实例恢复时要写到数据文件去的 undo->未递交的事务. redo的原因是

golang Mysql -- Tx

浪子不回头ぞ 提交于 2020-02-01 00:11:43
Transaction 事务 事务处理是数据的重要特性。尤其是对于一些支付系统,事务保证性对业务逻辑会有重要影响。golang的mysql驱动也封装好了事务相关的操作。我们已经学习了db的Query和Exec方法处理查询和修改数据库。 tx对象 一般查询使用的是db对象的方法,事务则是使用另外一个对象。sql.Tx对象。使用db的Begin方法可以创建tx对象。tx对象也有数据库交互的Query,Exec和Prepare方法。用法和db的相关用法类似。查询或修改的操作完毕之后,需要调用tx对象的Commit提交或者Rollback方法回滚。 一旦创建了tx对象,事务处理都依赖与tx对象,这个对象会从连接池中取出一个空闲的连接,接下来的sql执行都基于这个连接,直到commit或者rollback调用之后,才会把连接释放到连接池。 在事务处理的时候,不能使用db的查询方法,虽然后者可以获取数据,可是这不属于同一个事务处理,将不会接受commit和rollback的改变,一个简单的事务例子如下: tx, err := db.Begin() tx.Exec(query1) tx.Exec(query2) tx.commit() 在tx中使用db是错误的: tx, err := db.Begin() db.Exec(query1) tx.Exec(query2) tx.commit()

day28 JavaWEB阶段——JDBC笔记(mysql-5.1.37和mysql-8.0.15数据库驱动包,SQL 注入原因和解决方案,PreparedStatement 完成增、删、改、查)

戏子无情 提交于 2020-01-30 03:54:24
JDBC mysql-5.1.37和mysql-8.0.15数据库驱动包下载 ,如何导入IDEA往下看 今日源码 链接: https://pan.baidu.com/s/12ibAtAjbaRGFPuAcaA52Dg 提取码:n6ux 第1节 回顾 1.1 表连接 内连接: 隐式、显式 隐式: 没有 join,使用 where 显式: inner join…on 外连接: 左连接和右连接 左连接: left outer join … on 右连接: right outer join … on 1.2 子查询 三种情况: 单行单列:比较运算符:>、<、= 多行单列:使用 in 关键字 多行多列:放在 from 后面,做为一张表再次查询 1.3 备份与还原 备份:mysqldump -u 用户名 -p 密码 数据库 > 文件名 还原: 登录使用数据库 use 数据库 source 文件名 1.4 事务 事务四个特性 ACID:原子性、一致性、隔离性、持久性 在 mysql 中有三条语句: 开启事务:start transaction 提交事务:commit 回滚事务:rollback 设置事务回滚点:savepoint 名字 回到回滚点:rollback to 名字 第2节 学习目标 能够理解 JDBC 的概念 能够使用 DriverManager 类 能够使用 Connection

读书《你的时间去哪儿了:六维时间管理模型》

筅森魡賤 提交于 2020-01-29 18:15:24
书名: 你的时间去哪儿了:六维时间管理模型 (盛世新管理书架) 作者: 房勇   “时间管理”从字面上理解常常给人误导:时间能被管理吗?让它慢一点、快一点,或多一些、少一些?时间没有暂停键,每一分、每一秒都被我们的行为、事务所填充,而人们不同的行为、事务,会带来不同的结果和人生。所谓“时间管理”其实是对事务的管理,即自我行为的管理,在“时间管理”的理念指导下,通过有效地处理自己生活周遭的各类事务,来获取效率及效果,进而达到个人生活及工作状态的改变和提升。当你通过有效打理事务而获得你想要的物质或地位时,时间资源就转换成了空间资源——所以时间可以换空间。   时间管理应涉及人生的六大领域,我把它们归结为身、心、乐、家、业、财六个方面。我们只有打理好生活和工作的各个方面,才能称得上拥有一个完整的人生、平衡的人生。   我们大部分日常的烦恼来源于自身对事务打理得缺乏策略,常常被事情推着走,而不是主动推动事情的发展。“时间管理”教人如何把事情更有效地操控在自己手里,进而达到符合自身情况的合理目标和目的,减少生活、工作中的烦乱、无序和无效,拥有积极、运筹和从容。   真心希望看过此书的读者,能够理解时间的无形力量,使用优先矩阵区分事物的轻重缓急,利用计划表格将时间合理地分配到六大领域中去,积极行动起来,从打理事务获得收益的过程中开心地度过每一段时光