Hibernate二级缓存的应用

Hibernate二级缓存的应用及其最佳实践
Hibernate从其诞生以来,其性能及效率一直为世人所诟病。正因为如此,有大部分人一直认为Hibernate不适合开发大项目。今天就让我们一步一步为Hibernate正名。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得程序员可以随心所欲的使用对象编程思维来操纵数据库。最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
1. 首先,我们了解下Hibernate的缓存机制。
Hibernate缓存机制对Hibernate的性能发挥一直处于一个极其重要的作用,它是持久层性能提升的关键。




图1-1
Hibernate缓存介于Hibernate应用和数据库之间,缓存中存放了数据库数据的拷贝。 其作用是减少访问数据库的频率,从而提高应用的运行性能。由图1-1可以看出,如果查询缓存命中率高,则性能也会相应的提升。
2. Hibernate缓存分类
2.1 一级缓存: Session级别的缓存 (不讲)
2.2 二级缓存: SessionFactory级别的全局缓存 (重点讲)。Hibernate并没有提供相应的二级缓存的组件,所以需要加入额外的二级缓存包,常用二级缓存包是ECHcache。
3. 操作步骤:
3.1在Hibernate.cfg.xml中配置开启二级缓存
<property name="hibernate.cache.use_second_level_cache">
true
</property>
3.2设置二级缓存所提供的类
<property name="hibernate.cache.provider_class">
net.sf.ehcache.hibernate.EhCacheProvider
</property>
3.3 在hibernate4.0之后需要设置Facotory_class,目的提生效率
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory
</property>
3.4设置相应的ehcache.xml文件,在这个文件中配置二级缓存的参数
3.4.1默认缓存
<defaultCache
maxElementsInMemory="10000"//在内存中有1万个对象
eternal="false"//是否永远不在内存中消失
timeToIdleSeconds="120"//每个对象的最大空闲时间(单位:秒)
timeToLiveSeconds="120"//每个对象的最大活时间(单位:秒)
overflowToDisk="true"//当超过1万的,放到硬盘上面
/>
3.4.2 每一个独立的cache可以单独为不同的对象进行设置
<cache name="simple"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
overflowToDisk="true"
/>
4. 说明配置文件的位置
<property name="hibernate.cache.provider_configuration_file_resource_path">
ehcache.xml
</property>
5. 开启二级缓存
在xml的配置中设置
<class name="Department" table="SysDepartment">
<cache usage="read-only"/>
注:二级缓存缓存的是对象,它是把所有的对象缓存到内存中,一定注意是基于对象的缓存。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值