hibernate设置事物隔离级别

1、事物的概念

     事物指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功

2、事物的四大特性

      (1)原子性(Atomicity) 
       原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。比如在同一个事务中的SQL语句,        要 么全部执行成功,要么全部执行失败。

     (2)一致性(Consistency) 
     官网上事务一致性的概念是:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。还要一种说法是事务前后数据的      完整性必须保持一致。以转账为例子,A向B转账,假设转账之前这两个用户的钱加起来总共是2000,那么A向B转账之后,不管      这两个账户怎么转,A用户的钱和B用户的钱加起来的总额还是2000,这个就是事务的一致性。

    (3)隔离性(Isolation) 
    事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事     务之间要相互隔离。

   (4)持久性(Durability) 
    持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影   响。

3、事物的隔离级别

  不考虑隔离性会引发的问题(事物的并发问题)

1.脏读 
指一个事务读取了另外一个事务未提交的数据 

2.不可重复读 
在一个事务内读取表中的某一行数据,多次读取结果不同。(一个事务读取到了另外一个事物提交的数据) 

3.虚读(幻读) 
虚读()是指在一个事务内读取到了别的事务新插入的数据,导致前后读取不一致。 

覆盖更新:覆盖更新是不可重复读的特例,指一个事务覆盖了另一个事务的已提交的更新数据

丢失更新:撤销或回滚一个事务时,把其它事务已提交的更新数据覆盖

隔离级别

Serializable(串行化):可避免脏读、不可重复读、虚读情况的发生。

Repeatable read(可重复读):可避免脏读、不可重复读情况的发生。

Read committed(读已提交):可避免脏读情况发生。

Read uncommitted(读未提交):最低级别,以上情况均无法保证。

总结:Serializable隔离级别,虽然可避免所有问题,但性能、效率是最低的,原因是它采取的是锁表的方式,即单线程的方式,即有一个事务来操作这个表了,另外一个事务只能等在外面进不来。随着隔离级别的增高,并发性能降低,随之会引发运行的性能、效率问题

4、使用hibernate设置事物隔离级别

在Hibernate的配置文件中可以显示的配置数据库事务隔离级别。每一个隔离级别用一个整数表示:


1  Read Uncommited 可读未提交

2  Read Commited 可读已提交

4  Repeatable Read 可重复读

8  Serializable 串行化

在hibernate.cfg.xml中使用hibernate.connection.isolation参数配置数据库事务隔离级别。

例:

<property name="hibernate.connection.isolation">4</property>

———————————————————————————————————————————————————————

  接触编程不久,目前在框架学习阶段,以上是对学习遇到问题的归纳总结,还请各位大佬多多指教!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值