Hibernate的事务管理

一、什么是事务

事务:事务指的是逻辑上的一组操作,组成这组操作的各个逻辑单元要么全部成功,要么全部失败。

二、事务特性

原子性:代表事务不可分割。

一致性:代表事务执行的前后,数据的完整性要保持一致。

隔离性:代表一个事务执行的过程中,不应该受到其他事务的干扰。

持久性:代表事务执行完成后,数据就持久到数据库中。

三、不考虑隔离性会引发的安全性问题

a)读问题

    脏读:             一个事务读到另一个事务未提交的数据。

    不可重复读:    一个事务读到另一个事务已经提交的update数据,导致在前一个事务多次查询结果不一致。

    虚读:              一个事务读到另一个事务已经提交的insert数据,导致在前一个事务多次查询结果不一致。

b)写问题

    两类丢失更新


四、读问题的解决

a)设置事务的隔离级别

    Read uncommitted :以上读问题都会发生。

    Read committed     :解决脏读,但是不可重复读和虚读有可能发生。(Oracle默认使用)

    Repeatable read     :解决脏读和不可重复读,但是虚读有可能发生。(MySQL默认使用)

    Serializable             :解决所有读问题。(效率比较低)


五、Hibernate事务级别设置

在hibernate.cfg.xml文件中设置

<!-- 
    事务级别管理
  1—Read uncommitted isolation
  2—Read committed isolation
  4—Repeatable read isolation
  8—Serializable isolation
-->
<property name="hibernate.connection.isolation">4</property>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值