zoukankan      html  css  js  c++  java
  • 关于Hibernate脏检查与快照

                          脏检查
    Session到底是如何进行脏检查的呢?当一个Customer对象被加入到Session缓存中时,
    Session会 为Customer对象的值类型的属性复制一份快照。当Session清理缓存时,会
    先进行脏检查,即比较Customer对象的当前属性与它的快照,来 判断Customer对象的
    属性是否发生了变化,如果发生了变化,就称这个对象是“脏对象”,Session会根据
    脏对象的最新属性来执行相关的SQL语 句,从而同步更新数据库。 缓存清理机制 当
    Session缓存中对象的属性每次发生了变化,Session并不会立即 清理缓存和执行相关
    的SQL update语句,而是在特定的时间点才清理缓存,这使得 Session能够把几条相关
    的SQL语句合并为一条SQL语句,一遍减少访问数据库的次数,从 而提高应用程序的数据
    访问性能。 在默认情况下,Session会在以下时间点清理缓存。 1. 当应用程序 调用
    org.hibernate.Transaction的commit()方法的时候.commit方法先清理缓存,然后再
    向数据库提交事务。 Hibernate之所以把清理缓存的时间点安排在事务快结束时,一方
    面是因为可以减少访问数据库的频率,还有一方面是因为可以尽可能缩短当前事务对数
    据 库中相关资源的锁定时间。 2. 当应用程序执行一些查询操作时,如果缓存中持久
    化对象的属性已经发生了变化,就会清理缓存,使得Session缓存与数据库已经进行了同
    步,从而保证查询结果返回的是正确的数据。 3. 当应用程序显示调用Session的flush
    ()方法的时候。 Session进行清理缓存的例外情况是,如果对象使用native生成器来生
    成OID,那么当调用Session的save()方法保存该对象时,会立即执行向数据库插入该实体的insert语句。

                               看图说话:

  • 相关阅读:
    Android 亮度调节
    Android异步回调中的UI同步性问题
    Java总结篇系列:Java 反射
    Node入门教程(4)第三章:第一个 Nodejs 程序
    Node入门教程(3)第二章: Node 安装
    Node入门教程(2)第一章:NodeJS 概述
    Node入门教程(1)目录
    前端面试题:JS中的let和var的区别
    IT学习逆袭的新模式,全栈实习生,不8000就业不还实习费
    11-移动端开发教程-zepto.js入门教程
  • 原文地址:https://www.cnblogs.com/ainiaiwo/p/5817546.html
Copyright © 2011-2022 走看看