Hibernate 1.3 缓存机制

来源:互联网 发布:时来天地皆同力 知乎 编辑:程序博客网 时间:2024/06/12 01:27

Hibernate的缓存

了解缓存
并不是指计算机的内存或者CPU的一二级缓存。
缓存是指为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能的一种策略。

为什么使用缓存?
ORM框架访问数据库的效率直接影响应用程序的运行速度,提升和优化ORM框架的执行效率至关重要。
Hibernate的缓存是提升和优化Hibernate执行效率的重要手段,所以学会Hibernate缓存的使用和配置是优化的关键。

掌握Hibernate一级缓存
1.Hinernate一级缓存又称为“Session”缓存,“会话级缓存”。
2.通过Session从数据库查询实体在内存中存储起来,下一次查询同一实体时不再从数据库获取,而从内存中获取,这就是缓存
3.一级缓存的生命周期和Session相同;Session销毁,它也销毁。
4.一级缓存中的数据可使用范围在当前会话之内。

Hibernate一级缓存的API
Hibernate默认,并且强制开启一级缓存
一级缓存无法取消,用两个方法管理。
evict():用于将某个对象从Session的一级缓存中清除。
clear():用于将一级缓存中的所有对象全部清除。
一级缓存有些时候会对程序的性能产生影响。

掌握Hibernate二级缓存
二级缓存又称为“全局缓存”、“应用级缓存”
二级缓存中的数据可适用范围是当前应用的所有会话
二级缓存是可插拔似乎缓存,默认是EHCache,还支持其他二级缓存组件如:Hashtable,OSCache,SwarmCache,JBoss TreeCache等。

在通常情况下会将具有以下特征的数据放入到二级缓存中
很少被修改的数据。
不是很重要的数据,允许出现偶尔并发的数据。
不会被并发访问的数据。
参考数据。

二级缓存的配置步骤
添加二级缓存对应的jar包
在hibernate的配置文件中添加Provider类的描述
添加二级缓存的属性配置文件

net.sf.ehcache.hibernate.EhCacheProvider
在需要被缓存的表所对应的映射文件中添加标签
在实体类的配置中设置

的详细介绍
usage:指定缓存策略,可选的策略包括:transactional,read-write,nonstrict-read-write,read-only(只读,效率较高)
include:all,non-lazy(当当前对象是xxx的时候,并不缓存xxx对应对象的延迟加载的属性,)
region:当前的表名(表示在ehcache.xml中可以给当前的表去定义它的缓存策略).
<(defaultCache)XXX表名
maxElementsInMemory:表示缓存中允许创建的最大对象数
eternal:表示缓存中对象是否为永久的
timeToldleSeconds:表示缓存数据钝化时间(即对象在它过期前的空闲时间)
timeToLiveSeconds:表示缓存数据生存时间(即对象在它过期前的生存时间)
overflowToDisk:表示溢出之后是否存储在硬盘上
/>

一二级缓存的对比
如图

总结
1.Hibernate的缓存能提高检索效率
2.Hibernate的缓存分为一级缓存和二级缓存。一级缓存是会话级缓存,二级缓存是应用级缓存。
3.Hibernate的缓存在提高检索的同时,也会增加服务器的消耗,所以要注意缓存的使用策略。

0 0
原创粉丝点击