欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hibernate的事务管理

程序员文章站 2022-07-04 23:38:37
...

一、什么是事务

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

二、事务特性

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

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

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

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

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

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>

相关标签: HIbernate