Hibernate 再接触 事务隔离机制

事务:要么都要完成,一个不完成就要回滚。

ACID

原子性 一致性 独立性 持久性

第一类丢失更新

第一类丢失更新

脏读(读了另外一个事务没有提交的数据)

不可重复读(在同一个事务里,对数据库里的值前后读取值不一样)

第二类丢失更新(不可重复读的特殊情况)

幻读/(插入/删除)(读的时候,插入一条数据前后不一致)

repeatable read 给数据库加把锁 别的无法改这条记录

serial 安全级别最高 但是速度最慢

一般设置为2

read-committed

不设的话依赖于数据库

原文地址:https://www.cnblogs.com/frankzone/p/9607254.html

时间: 2024-10-14 20:00:12

Hibernate 再接触 事务隔离机制的相关文章

理解MySql事务隔离机制、锁以及各种锁协议

一直以来对数据库的事务隔离机制的理解总是停留在表面,其内容也是看一遍忘一边.这两天决定从原理上理解它,整理成自己的知识.查阅资料的过程中发现好多零碎的概念如果串起来足够写一本书,所以在这里给自己梳理一个脉络,具体的内容参考引文或在网上搜一下.由于平时接触最多的是MySQL,所以文章中某些部分是MySQL特有的特性,请读者注意. 数据库并发操作会引发的问题: 多个事务同时访问数据库时候,会发生下列5类问题,包括3类数据读问题(脏读,不可重复读,幻读),2类数据更新问题(第一类丢失更新,第二类丢失更

事务隔离机制_悲观锁_乐观锁

5. 事务并发处理 a) 事务的特性:ACID i.Atomicity 原子性 ii.Consistency 一致性 iii.Isolation 隔离性 iiii.Durability 持久性 b) 事务并发时可能出现的问题 i. 第一类丢失更新(Lost Update) 时间 取款事务A 存款事务B T1 开始事务   T2   开始事务 T3 查询账户余额为1000元   T4   查询账户余额为1000元 T5   汇入100元把余额改为1100元 T6   提交事务 T7 取出100元把

一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制

首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行. (2) C:一致性(Consistency) 事务完成时,数据必须处于一致的状态.若事务执行途中出错,会回滚到之前的事务没有执行前的状态,这样数据就处于一致的状态.若事务出错后没有回滚,部分修改的内容写入到了数据库中,这时数据就是不一致的状态. (3) I:隔离性(Isolation) 同时处理多个事务时

Hibernate中的事务隔离问题(脏读、不可重复读、幻读)

Hibernate中的事务隔离问题(脏读.不可重复读.幻读) 1.事务的特性 事务的四个特性: 1)原子性:事务是进行数据库操作的最小单位,所以组成事务的各种操作是不可分割的 2)一致性:组成事务的各种操作,要么全部成功,要么全部失败.其中有一个失败,事务无法完成 3)隔离性:在并发中,每个事务都是独立的 4)持久性:这是结果,表示在事务提交之后,数据将持久的保存到数据库 2.事务的隔离问题 事务的三个隔离问题: 1)脏读:一个事务读到了另一个事务还没提交的数据 如:A事务正在读一个数据a,但是

hibernate缓存机制和事务隔离机制

一级缓存( Session缓存) }         一级缓存的管理 ?          应用程序调用Session的save().update().saveOrUpdate().get()或load(),以及调用查询接口的 list().iterate() 时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中. ?          可以通过close/clear/evict清空缓存 }         作用 因为Session的生命期往往很短,

事务隔离机制

数据库隔离机制,要看事务!!!(两个事务读到的数据不一致不能算脏读什么的,只能是同一个数据读到的不一致.或者你一个读取的事务插到人家正在update的事务中了就是脏读.) 先说几个并发时候容易出现的问题: 1.更新丢失 分为两类 第一类, 覆盖丢失  (最后提交的事务B会覆盖B事务执行过程中的别的事务进行的修改):比如一个链接是要去改name,load一个name1,age1两个数据出来,修改了之后,事务还没提交的时候,又来了一个链接,load了同样的一个name1,age1出去,等第一个请求事

数据库的事务隔离机制

事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度. 两个并发事务同时访问数据库表相同的行时,这些问题可以归结为5类: 3类数据读问题(脏读.不可重复读和幻象读) 2类数据更新问题(第一类丢失更新和第二类丢失更新). 1.幻读:事务T1读取一条指定where条件的语句,返回结果集.此时事务T2插入一行新记录,恰好满足T1的where条件.然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想. 2.不可重复读取:事务T1读取一行记录,紧接着事务T2修改了

Hibernate 再接触 悲观锁和乐观锁

为什么取1248 二进制 CRUD 移位效率高 在并发和效率选择一个平衡点 一般不会考虑幻读 因为我们不会再一个事务里查询两次,(只能设置为seralizable) 悲观锁和乐观锁的前提是read-uncommitted 在数据库中 默认是repeatable read 悲观锁是想着总有人要更改 所以使用数据库的锁 乐观锁是在程序级别的 设置一个版本号 如果前后不一致就进行自己的操作 例子 悲观所 Acocount package com.bjsxt.hibernate; import java

Hibernate 再接触 核心开发接口

1.可以重载方法进行配置文件的指定 sessionFactory = new AnnotationConfiguration().configure("hibernate.xml").buildSessionFactory(); 这样读取到的就是hibernate.xml 但一般不建议修改 getcurrentsession 指的是上下文如果没有提交 就不会创建新的session opensession 永远打开新的session 用于鉴定事务边界 比如加入日志操作等 事务:要么同时完