Hibernate事务管理

  • 事务特性(ACID)
    ACID即:事务的原子性、一致性、独立性及持久性

    1. 事务的原子性:是指一个事务要么全部执行,要么不执行.也就是说一个事务不可能只执行了一半就停止了.比如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱.不可能划了卡,而钱却没出来.这两步必须同时完成.要么就不完成.
    2. 事务的一致性:是指事务的运行并不改变数据库中数据的一致性.例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变.
    3. 事务的独立性:是指两个以上的事务不会出现交错执行的状态.因为这样可能会导致数据不一致.
    4. 事务的持久性:是指事务运行成功以后,就系统的更新是永久的.不会无缘无故的回滚.
  • 数据库的隔离级别:

    1. Read Uncommited(未提交读):没有提交就可以读取到数据(发出了Insert,但没有commit就可以读取到。)很少用
    2. Read Commited(提交读):只有提交后才可以读,常用,
    3. Repeatable Read(可重复读):mysql默认级别, 必需提交才能见到,读取数据时数据被锁住。
    4. Serialiazble(序列化读):最高隔离级别,串型的,你操作完了,我才可以操作,并发性特别不好
  • 不考虑事务的隔离性,会产生如下问题:

    1. 脏读:一个事务读取到另一个事务的未提交数据。
    2. 不可重复读:一个事务读取到另一个事务提交的数据(主要是指update操作),会导致两次读取的结果不一致。
    3. 虚读(幻读):一个事务读取到另一个事务提交的数据(主要是指insert操作),会导致两次(也有可能是多次)读取结果不一致
  • Hibernate中设置事务隔离级别
    Hibernate框架中可通过配置文件添加如下配置来设置事务的隔离级别,
    <property name="hibernate.connection.isolation">2</property>
    它可取的值有1、2、4、8:

    • 1代表的事务隔离级别为READ UNCOMMITTED
    • 2代表的事务隔离级别为READ COMMITTED
    • 4代表的事务隔离级别为REPEATABLE READ
    • 8代表的事务隔离级别为SERIALIZABLE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值