`
反求诸己
  • 浏览: 543152 次
  • 性别: Icon_minigender_1
  • 来自: 湖南娄底
社区版块
存档分类
最新评论

hibernate Isolation Level(事务隔离等级)

 
阅读更多

hibernate Isolation Level(事务隔离等级)

 

1、Serializable:最严格的级别,事务串行执行,资源消耗最大;
2、REPEATABLE READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。
3、READ COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。
4、Read Uncommitted:保证了读取过程中不会读取到非法数据。隔离级别在于处理多事务的并发问题。
我们知道并行可以提高数据库的吞吐量和效率,但是并不是所有的并发事务都可以并发运行。
我们首先说并发中可能发生的3中不讨人喜欢的事情
1: Dirty reads--读脏数据。也就是说,比如事务A的未提交(还依然缓存)的数据被事务B读走,如果事务A失败回滚,会导致事务B所读取的的数据是错误的。
2: non-repeatable reads--数据不可重复读。比如事务A中两处读取数据-total-的值。在第一读的时候,total是100,然后事务B就把total的数据改成 200,事务A再读一次,结果就发现,total竟然就变成200了,造成事务A数据混乱。
3: phantom reads--幻象读数据,这个和non-repeatable reads相似,也是同一个事务中多次读不一致的问题。但是non-repeatable reads的不一致是因为他所要取的数据集被改变了(比如total的数据),但是phantom reads所要读的数据的不一致却不是他所要读的数据集改变,而是他的条件数据集改变。比如Select account.id where account.name="ppgogo*",第一次读去了6个符合条件的id,第二次读取的时候,由于事务b把一个帐号的名字由"dd"改 成"ppgogo1",结果取出来了7个数据。

  Dirty reads non-repeatable reads phantom reads
Serializable 不会 不会 不会
REPEATABLE READ 不会 不会
READ COMMITTED 不会
Read Uncommitted


readOnly
事务属性中的readOnly标志表示对应的事务应该被最优化为只读事务。

 

另附转载文章地址【感谢!】

:http://blog.csdn.net/seng3018/article/details/6690559

分享到:
评论

相关推荐

    Spring控制Hibernate中的事务传播特性与隔离级别操作.docx

    事务的隔离级别(Isolation Level)则定义了并发事务间的数据可见性规则。通常有四个隔离级别:READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE。每个级别的选择都会影响并发性能和数据一致性。 ...

    Hibernate事务缓存

    - **隔离性(Isolation)**: 并发执行的事务之间是隔离的,不会互相干扰。 - **持久性(Durability)**: 一旦事务提交,其对数据库的影响将是永久性的。 **3. Hibernate中的事务控制** - **SessionFactory与Session...

    hibernate映射篇

    Hibernate是Java领域中一款强大的对象关系映射框架,它允许开发者用面向对象的...通过理解并熟练应用多对一、一对一和一对多映射,以及级联操作和事务隔离级别,我们可以更好地利用Hibernate提升Java应用的开发效率。

    跟我学Spring3(9.1)Spring的事务之数据库事

    此外,Spring的隔离级别设置(Isolation Level)允许调整并发事务间的隔离程度,包括READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE等。不同的隔离级别对应不同的并发问题解决方案,如脏读、不可...

    hibernate学习资料

    2. **事务的四大特性(ACID)**: 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 **七、性能优化** 1. **延迟加载(Lazy Loading)**: 只在真正需要时加载关联对象,...

    Hibernate学习

    - **Mysql数据库修改隔离级别**:命令`SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;`。 - **Session.evict(user)方法**:将对象从缓存中移除,使其变为游离态。 - **解决在逐出session缓存中的对象不抛...

    最新JAVA面试题总结之数据库.zip

    - 了解ACID(原子性、一致性、隔离性、持久性)特性,以及在Java中如何通过设置Transaction Isolation Level来控制事务隔离级别。 - 学会使用`Connection.commit()`和`Connection.rollback()`进行事务提交和回滚。...

    Java数据库高级编程宝典

    通过设置TransactionIsolationLevel,控制并发操作的隔离级别,以及使用Connection对象的commit()和rollback()方法,可以实现ACID(原子性、一致性、隔离性和持久性)属性。 3. **PreparedStatement**: ...

    ssh easyui

    5. **隔离级别(Isolation Level)**:在并发环境中,控制不同事务间的可见性和一致性,包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。...

    这是一篇对java八股文的详细介绍的文章

    - **事务控制**:通过SET TRANSACTION ISOLATION LEVEL语句控制事务隔离级别。 #### 五、设计模式 1. **工厂模式** - **目的**:封装实例化过程,将实例化的逻辑集中在一个地方。 2. **单例模式** - **目的**:...

Global site tag (gtag.js) - Google Analytics