博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】
阅读量:4983 次
发布时间:2019-06-12

本文共 1395 字,大约阅读时间需要 4 分钟。

spring事务:

什么是事务:
逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败.

事务特性(4种):

原子性(atomicity):强调事务的不可分割.
一致性(consistency):事务的执行的前后数据的完整性保持一致.
隔离性(isolation):一个事务执行的过程中,不应该受到其他事务的干扰
持久性(durability) :事务一旦结束,数据就持久到数据库

如果不考虑隔离性引发安全性问题:

脏读 :一个事务读到了另一个事务的未提交的数据
不可重复读 :一个事务读到了另一个事务已经提交的 update 的数据,导致多次查询结果不一致.
幻象读 :一个事务读到了另一个事务已经提交的 insert 的数据,导致多次查询结果不一致.

解决读问题: 设置事务隔离级别(5种)

DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
未提交读(read uncommited) :脏读,不可重复读,幻象读都有可能发生
已提交读 (read commited):避免脏读。但是不可重复读和幻象读有可能发生
可重复读 (repeatable read) :避免脏读和不可重复读.但是幻象读有可能发生.
串行化的 (serializable) :避免以上所有读问题.
Mysql 默认:可重复读
Oracle 默认:读已提交

read uncommited:是最低的事务隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。
read commited:保证一个事物提交后才能被另外一个事务读取。另外一个事务不能读取该事物未提交的数据。
repeatable read:这种事务隔离级别可以防止脏读,不可重复读。但是可能会出现幻象读。它除了保证一个事务不能被另外一个事务读取未提交的数据之外还避免了以下情况产生(不可重复读)。
serializable:这是花费最高代价但最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读之外,还避免了幻象读(避免三种)。

事务的传播行为

PROPAGION_XXX :事务的传播行为
* 保证同一个事务中
PROPAGATION_REQUIRED 支持当前事务,如果不存在 就新建一个(默认)
PROPAGATION_SUPPORTS 支持当前事务,如果不存在,就不使用事务
PROPAGATION_MANDATORY 支持当前事务,如果不存在,抛出异常
* 保证没有在同一个事务中
PROPAGATION_REQUIRES_NEW 如果有事务存在,挂起当前事务,创建一个新的事务
PROPAGATION_NOT_SUPPORTED 以非事务方式运行,如果有事务存在,挂起当前事务
PROPAGATION_NEVER 以非事务方式运行,如果有事务存在,抛出异常
PROPAGATION_NESTED 如果当前事务存在,则嵌套事务执行

【提问】

假如一个没有事务的方法调用了有事务的方法,然后有事务的方法又调用了其他无事务的方法。那么请问事务还生效吗?

【答】生效的,但是无事务和有事务的方法不能同时操作一个表中数据。

 

转载于:https://www.cnblogs.com/smallwangmusk/p/11355532.html

你可能感兴趣的文章
oracle ebs 笔记
查看>>
Android studio使用git-android学习之旅(79)
查看>>
eclipse中去掉Js/javsscript报错信息
查看>>
网络中,FIFO、LRU、OPT这三种置换算法的缺页次数
查看>>
随机森林算法参数调优
查看>>
read命令读取用户输入
查看>>
Mysql编写定时任务事件
查看>>
路由器/交换机/集线器的区别收集(转)
查看>>
今日头条面试题汇总
查看>>
hdu 1305 Immediate Decodability
查看>>
基本数据类型
查看>>
laravel 配置sql日志
查看>>
基于注意力机制的群组推荐算法
查看>>
Android: 创建一个AlertDialog对话框,必须按确定或取消按钮才能关闭对话框,禁止按[返回键]或[搜索键]关闭...
查看>>
linux更改shell
查看>>
win7 64位系统 pl/sql 无法解析指定的连接标识符解决办法
查看>>
linux -- RPM 和 YUM
查看>>
给列表单元格加背景色
查看>>
knockoutjs 静动态数据、行为绑定,计算属性及Sync同步更新 Value值更新事件控制...
查看>>
关于.NET编程中各种事务的实现
查看>>