hibernate_二级缓存(second cache)
来源:互联网 发布:ibearfree是什么软件 编辑:程序博客网 时间:2024/06/03 11:20
适合用二级缓存的对象:
如果使用的主键生成策略,在对象保存进数据库之前就可以确定主键, 则save() 会将对象放入二级缓存.
该对象读的次数远远大于写的次数. 如果每次读出来是为了写(即频繁写的对象),则不适合放入二级缓存.
因为如果一个经常写的对象放入二级缓存, 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"/> 数据库生成主键,意味着对象只有在保存进数据库时才会确定主键.
阅读全文
0 0
- hibernate_二级缓存(second cache)
- Hibernate_二级缓存_Demo
- Hibernate 一级缓存(First-level cache)和二级缓存(second-level cache) 介绍
- Hibernate_一级缓存_二级缓存
- Hibernate_二级缓存2_二级缓存详解
- Hibernate_二级缓存1_初步使用
- Hibernate_二级缓存3_使用EHCache缓存
- The Second Level Cache
- 二级缓存(L2 CACHE)
- hibernate 二级缓存 @cache注解
- MyBatis 二级缓存cache官方解释
- cache二级缓存的简单使用
- 探索 Hibernate 3.3 second-level cache
- org.hibernate.cache.NoCachingEnabledException: Second-level cache is not enabled
- hibernate二级缓存:Hibernate缓存Cache配置
- spring mybatis mvc cache 缓存 二级缓存
- Mybatis Cache(一级缓存、二级缓存)
- 配置Spring+hibernate使用ehcache作为second-level cache
- Android 加载GIF图最佳实践
- 挖洞经验 | 把PHP LFI漏洞变成Webshell的思路
- Eclipse报错显示Unable to build: the file dx.jar was not loaded from the SDK folder
- 二叉搜索树的后序遍历序列
- JavaScript中的对象复制(Object Clone)
- hibernate_二级缓存(second cache)
- 常用文件存储路径大汇总
- Makefile中自动化变量使用详解
- JAVA并发--ThreadLocal学习之路
- slam安装中libcholmod-dev文件找不到的解决办法
- 其实你不懂系列之java异常
- PL/SQL --if,case,while语句
- Cg Programming/Unity/Transparency透明度
- JavaScript巧用Object的get和set方法实现js变量的动态监听