浅谈Hibernate缓存机制以及一级缓存和二级缓存的作用

      java对象的属性(通常是一些集合类型的属性 )占用的内存空间。如果对象的占用的内存很大就称为重量级的对象。如果对象的内存小就称为轻量级的对象。

      Session 的缓存被称为hibernate的第一级缓存。SessionFactory的外置缓存称为hibernate 的二级缓存。这两个缓存都位于持久层,它们存放的都是数据库数据的拷贝。SessionFactory的内置缓存 存放元数据和预定义SQL, SessionFactory的内置缓存是只读缓存。

      Session 缓存的三大作用:

      1,减少数据库的访问频率,提高访问性能。

      2,保证缓存中的对象与数据库同步,位于缓存中的对象称为持久化对象。

      3,当持久化对象之间存在关联时,Session 保证不出现对象图的死锁。

      Session 如何判断持久化对象的状态的改变呢?

      Session 加载对象后会为对象值类型的属性复制一份快照。当Session 清理缓存时,比较当前对象和它的快照就可以知道那些属性发生了变化。

      Session 什么时候清理缓存?

      1,commit() 方法被调用时

      2,查询时会清理缓存,保证查询结果能反映对象的最新状态。

      3,显示的调用session 的 flush方法。

      session 清理缓存的特例:

      当对象使用 native 生成器 时 会立刻清理缓存向数据库中插入记录。

 

本文来自: IT知道网(http://www.itwis.com) 详细出处参考:http://www.itwis.com/html/java/hibernate/20080528/1580.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值