hibernate_二级缓存(second cache)

来源:互联网 发布:ibearfree是什么软件 编辑:程序博客网 时间:2024/06/03 11:20
适合用二级缓存的对象:

该对象读的次数远远大于写的次数. 如果每次读出来是为了写(即频繁写的对象),则不适合放入二级缓存.

因为如果一个经常写的对象放入二级缓存, hibernate 需要经常修改二级缓存里存放的该对象, 即锁住map, 其他线程就会锁在这, 性能差.

下面介绍二级缓存如何使用:

(1) 告诉hibernate 你使用哪个缓存框架( 以ehcache 为例 ), 在hibernate 配置文件中加这两句代码:

<property name="cache.use_second_level_cache">true</property><property name="cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
(2) 导入选定的缓存框架相应jar 包:

hibernate-release-5.2.10.Final \ lib\optional \ ehcache 目录下的所有jar 包.

(3)告诉hibernate 哪些类型的对象需要放入二级缓存:

<class-cache usage="read-write" class="cd.itcast.day5.cache.Employee"/>
(4)将encache 的配置文件拷到类路径.(即: 将hibernate-release-5.2.10.Final \ project \ etc \ encache.xml 拷贝到src目录).


到此, 二级缓存就使用上了. 如果你还想进行缓存分区( 即: 将指定数据放入指定的缓存地区. 类似于QQ会员一样), 按以下步骤即可实现:

1) 在ehcache.xml 中配置一个cache:

<cache name="cditcast.employee"        maxElementsInMemory="100"        eternal="true"        overflowToDisk="true"        />
2) 在hibernate配置文件中声明缓存地区的前缀(prefix):

<property name="cache.region_prefix">cditcast</property>
3) 在告诉hibernate 指定对象需要放入二级缓存时, 指定放入的缓存地区:

<class-cache usage="read-write" class="cd.itcast.day5.cache.Employee" region="employee"/>


如果你需要统计二级缓存的使用信息( 便于跳转缓存策略 ), 可按以下步骤实现:

<1>在hibernate 配置文件中, 添加: 

<property name="generate_statistics">true</property>
<2>在需要打印统计信息的地方调用以下方法( 其实就是通过SessionFactory 获取Statistics ):

//打印统计信息private void printStatistics(){SessionFactory factory = HibernateUtil.getInstance().getSessionFactory();Statistics s = factory.getStatistics();System.out.println("puts="+s.getSecondLevelCachePutCount());System.out.println("hit="+s.getSecondLevelCacheHitCount());System.out.println("miss="+s.getSecondLevelCacheMissCount());System.out.println("-------------------------");}
扩展一点小知识: 
如果使用的主键生成策略,在对象保存进数据库之前就可以确定主键, 则save() 会将对象放入二级缓存.

<generator class="native"/>  数据库生成主键,意味着对象只有在保存进数据库时才会确定主键.



下面介绍不同的缓存策略(即: usage 的值), 以及二级缓存和一级缓存的介绍:









原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 红薯吃多了胃胀怎么办 在赌场掉了筹码怎么办? 到缅甸被绑架了怎么办 在淘宝不给退货怎么办 鞋上魔术贴坏了怎么办 手机支架不粘了怎么办 赌博把房子输了怎么办 当发现老公有外遇时怎么办 led灯带中间不亮怎么办 飘窗的天花板凸怎么办 一受委屈就爱哭怎么办 6岁儿童叛逆期怎么办 孩子高一了厌学怎么办 除上有肥胖纹怎么办 6岁不爱写作业怎么办 初中孩子不爱写作业怎么办 孩子上课走神写作业慢怎么办 孩子作业写得慢怎么办 4岁宝宝不写作业怎么办 小孩作业写得慢怎么办 3岁宝宝不写作业怎么办 小孩不写作业怎么办呀 作业没写完的人怎么办? 孩子不写作业家长该怎么办 做作业做得慢怎么办 高一作业写得慢怎么办 孩子做作业不认真怎么办 孩子不主动做作业怎么办 写作业静不下心怎么办 小孩不写作业怎么办啊 小孩子写作业爱磨蹭怎么办 孩子在学校不写作业怎么办 鳗鱼刺卡在喉咙怎么办 被小鱼刺卡住了怎么办 喉咙上卡了鱼刺怎么办 跟团出去受伤了怎么办 平安易宝冻结了怎么办 车的保险到期没有交怎么办 人保外地险出险怎么办 婚姻经营不下去了怎么办 他不爱我,我该怎么办