Hibernate——脏检查和缓存清理机制

转载 2015年07月10日 13:49:47

脏检查

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语句。

image

来源:《精通Hibernate: Java对象持久化技术详解(第2版)》孙卫琴:P184

Hibernate脏数据检查和缓存清理策略

简述 清理缓存: 对当前持久化状态的缓存数据进行检查,并且将有修改的数据持久化到数据库当中的过程称为“清理缓存”。清理缓存有一定的触发策略。 策略详解: 当一个对象在持久化的时候会添加到session...

NGINX 健康检查和负载均衡机制分析

nginx 是优秀的反向代理服务器,这里主要讲它的健康检查和负载均衡机制,以及这种机制带来的问题。所谓健康检查,就是当后端出现问题(具体什么叫出现问题,依赖于具体实现,各个实现定义不一样),不再往这个...

NGINX 健康检查和负载均衡机制分析

NGINX 健康检查和负载均衡机制分析 nginx 是优秀的反向代理服务器,这里主要讲它的健康检查和负载均衡机制,以及这种机制带来的问题。所谓健康检查,就是当后端出现问题(具...

自己学驱动14——内存管理单元MMU(内存访问权限检查和TLB)

1.内存的访问权限检查     内存的访问权限检查是MMU的主要功能之一,简单地说,它就是决定一块内存是否允许读、是否允许写。这由CP15寄存器C3(域访问控制)、描述符的域(Domain)、CP15...

Hibernate——(5)持久化对象和一级缓存机制

一、对象的三种状态 1、暂时态:当对象刚创建,和Session没有发生任何关系时,当程序运行完就即刻消失,被称为暂时态。 2、持久态:当执行如下代码时,对象变为持久态 Emp e = new Emp(...

Hibernate笔记——缓存机制详细分析

原文:http://www.cnblogs.com/xiaoluo501395377/p/3377604.html =========================================...
  • pwc1996
  • pwc1996
  • 2015年09月10日 12:40
  • 332

分析Hibernate的缓存机制

  • 2008年02月06日 00:12
  • 33KB
  • 下载

Hibernate的缓存机制

  • 2008年04月12日 21:22
  • 119KB
  • 下载

Hibernate学习——(十二)Hibernate缓存机制(一级、二级、查询)

一、why(为什么要用Hibernate缓存?) Hibernate是一个持久层框架,经常访问物理数据库。 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。 缓存内的数据是对物理...

Hibernate的缓存机制

  • 2012年02月08日 17:53
  • 33KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate——脏检查和缓存清理机制
举报原因:
原因补充:

(最多只允许输入30个字)