zoukankan      html  css  js  c++  java
  • 脏检查

    什么是脏检查?

      解析:当事务提交时,Hiberante会对Session中持久状态的对象进行检测,判断对象的数据是否发生了改变。

    如何进行脏检查?

      解析:当一个Dept对象被加入到Session缓存(有人又称为 一级缓存  后者是内部缓存)中时,Session会为Dept对象的值类型的属性复制一份快照。当Session刷新缓存时,会先进行脏检查,即比较Dept对象的当前属性与它的快照,来判断Dept对象的属性是否发生了变化。如果发生了变化,Session会根据脏对象的最新属性值来执行相关的SQL语句,将变化更新到数据库中

       Session具有一个缓存,可以管理和跟踪所有持久化对象,对象和数据库中的相关记录对应。

    脏检查和快照的图解过程:

      


    缓存清理机制:

    1.当应用程序调用org.hibernate.Transaction的commit()方法的时候.commit方法先清理缓存,然后再向数据库提交事务。Hibernate之所以把清理缓存的时间点安排在事务快结束时,一方面是因为可以减少访问数据库的频率,还有一方面是因为可以尽可能缩短当前事务对数据库中相关资源的锁定时间。

    2.当应用程序执行一些查询操作时,如果缓存中持久化对象的属性已经发生了变化,就会清理缓存,使得Session缓存与数据库已经进行了同步,从而保证查询结果返回的是正确的数据。

    3.当应用程序显示调用Session的flush()方法的时候。

  • 相关阅读:
    几种归一化方法的概念及python实现
    python 中几种基本的矩阵操作应用
    exec 命令简单用法 和 find 搭配用法示例
    使用git在github上创建新工程
    gcc编译参数详解概述
    此心不明,能有何为
    多个文件目录下Makefile的写法
    《高效能程序员的修炼》读后思考之写作的重要性
    音频格式RAW和PCM区别和联系
    SWIG 基本概念和入门
  • 原文地址:https://www.cnblogs.com/hero96/p/5818056.html
Copyright © 2011-2022 走看看