• 【Hibernate】事务处理


    一、概述

    • 事务
    • 事务就是逻辑上的一组操作,要么全都成功,要么全都失败!!!

    • 事务特性

      • 原子性:事务一组操作不可分割.
      • 一致性:事务的执行前后,数据完整性要保持一致.
      • 隔离性:一个事务在执行的过程中不应该受到其他事务的干扰.
      • 持久性:一旦事务结束,数据就永久保存数据库.
    • 如果不考虑事务的隔离性引发一些安全性问题:

    • 5大类问题:3类读问题 2类写问题.

    • 读问题:

      • 脏读: 一个事务读到另一个事务未提交数据.
      • 不可重复读: 一个事务读到另一个事务已经提交数据(update),导致查询结果不一致.
      • 虚读: 一个事务读到另一个事务已经提交的数据(insert),导致查询结果不一致
    • 避免三种读的问题:

      • 设置事务的隔离级别:
        • 未提交读:以上三种读问题 都有可能发生.
        • 已提交读:避免脏读,但是不可重复读和虚读有可能发生.
        • 重复读:避免脏读和不可重复读,但是虚读是有可能发生.
        • 串行的:可以避免以上三种读问题.
    • 在Hibernate中设置事务的隔离级别:

      • 在核心配置文件中:
      • 4
    • 写问题:丢失更新

      • 解决
        • 悲观锁:
        • 乐观锁;
    • 线程绑定的session:

      • 在Hibernate.cfg.xml中配置一个: thread
      • 使用SessionFactory中的getCurrentSession();方法.
      • 底层就是ThreadLocal.
    • 当前线程中的session不需要进行关闭,线程结束后自动关闭!!!

  • 相关阅读:
    UESTC
    Education Round 8 A
    Gym
    Gym
    hdoj 1159 Common Subsequence
    UVA
    UESTC
    51Nod 1068 Bash游戏 V3 (这规律不好找)
    51Nod 1066 Bash游戏
    51Nod 1002 数塔取数问题
  • 原文地址:https://www.cnblogs.com/haoworld/p/hibernate-shi-wu-chu-li.html
Copyright © 2020-2023  润新知