在Hibernate中,缓存将在以下情况中发挥作用:
1.通过id[主键]加载数据的时候
2.延迟加载

一级缓存:
又称内部缓存,保存了与当前session相关联的数据对象,伴随Session实例的创建而创建,消亡而消亡。因此又称此缓存为Session level cache。

一级缓存正常情况下又Hibernate自动维护,如果需要手动干预,可以通过以下方法完成。
1.Session.evict
  将某个特定对象从内部缓存中清除。
2.Sessin.clear
  清空内部缓存

二级缓存:
又称为SessionFactory Level Cache.
对什么样的数据使用二级缓存?
对所有数据都进行缓存是最简单的办法,也是最常用的办法。
但是某些情况下,反而会影响性能,比如电话费查询系统,如果实行缓存,内存会被几乎不可能再被重用的数据充斥,导致性能下降。
如果数据满足以下条件,可以将其纳入缓存管理:
1.数据不会被第三方应用修改。
2.data size在可以接受的范围之内
3.数据更新频率较低
4.同一数据可能会被系统频繁引用
5.非关键数据
Hibernate本身并没提供二级缓存的产品化实现(只提供了一个基于HashTable的简单缓存以供调试),可以使用第三方缓存来实现。
默认采用EHCache作为二级缓存实现。
EHCache org.ehcache.hibernate.Provider

posted on 2006-07-16 10:01 knowhow 阅读(227) 评论(0)  编辑  收藏 所属分类: ORM:Hibernate及其他

只有注册用户登录后才能发表评论。


网站导航: