Hibernate内部缓存的分析:
来源:互联网 发布:淘宝店仓库管理 编辑:程序博客网 时间:2024/06/05 02:30
Hibernate内部缓存的分析:
缓存的作用主要用来提高性能,可以简单的理解成一个Map;使用缓存涉及到三个操作:把数据放入缓存、从缓存中获取数据、删除缓存中的无效数据。
1、 一级缓存:
Session级别的缓存
(1)什么时候会将数据放入缓存?
当在调用save() 、 update()、saveOrUpdate()、load()、get()、list() 等方法时,在使用hql查询时,都会把数据放入一级缓存中。
目的:以后在从数据库查询数据时,优化查询功能,提高系统的性能。
(2)什么时候从缓存取数据?
get() load()会从缓存中取数据,如果缓存中有对象直接返回该对象,如果没有该对象从数据库中找对象
Query接口实现查询(调用list()方法),不从缓存中提取数据
Criteria:不从缓存中提取数据
(3)一级缓存不能控制缓存的数量,所以要注意大批量操作数据时可能造成内存溢出;
可以用evict,clear方法清除缓存中的内容。session释放也会清楚缓存中的内容
evict(object) 可以带参数 清除指定对象的缓存
clear 清除一级缓存中的所有对象
(4)一级缓存的缺陷:
没有保护,共享范围太小
Session.clear(); session.evict(object);
2、 二级缓存
SessionFactory级共享
在hibernate.cfg.xml配置二级缓存,主要告诉hibernate第三方缓存的提供者是谁
(1) cache.use_second_level_cache:true 决定要不要打开二级缓存,这个属性的默认值就是true,该属性不配置也可以。
(2) cache.provider_class:cache的提供者是谁,常用的是:org.hibernate.cache.OSCacheProvider
需要将oscache需要的jar包构建到项目中
需要将oscache.properties拷贝src目录下
(3)<class-cache>:告诉hibetnate哪些类对象需要放入缓存,默认的是都不放入缓存。
方法一、
<class-cache class=”com.hbsi.domain.User” usage=”read-only”/>
Usage:read-only 效率最高,但是有一个限制,如果缓存中的数据被更新,会报异常
Read-writer
Nonstrict-read-writer 可读写,不太严格,会出现无效数据等情况
Transactional
在hibernate.cfg.xml位置应该在mapping标签后面
方法二、
在类对应的映射文件中设置
在class标签里面。只指定usage属性即可
(4)载入commons-logging-1.1.1.jar 文件,这是一个日志的文件。
它会先从一级缓存中去找,找不到再去二级缓存中去找。
命中:
miss错过:
100
在配置文件中配置属性generate_statistics 为true系统才会产生统计信息,然后
在Statistics st=SessionFactory.getStatistics()//得到缓存的统计信息
st.getStartTime(); 开始的时间
st.getSessionOpenCount(); session打开的次数
st.getSessionCloseCount(); session关闭的次数
st.getSuccessfulTransactionCount()事务成功提交。
...
st.getSecondLevelCacheHitCount() 命中统计
st.getSecondLevelCachePutCount() 放入统计
st.getSecondLevelCacheMissCount() miss错过统计
Query查询的命中。miss 放入次数
st.getQueryCacheHitCount();
st.getQueryCacheMissCount();
st.getQueryCachePutCount();
- Hibernate内部缓存的分析:
- Hibernate内部缓存分析
- Hibernate内部缓存分析
- hibernate内部缓存
- 分析Hibernate的缓存机制
- 分析Hibernate的缓存机制
- 分析Hibernate的缓存机制
- 分析Hibernate的缓存机制
- 分析Hibernate的缓存机制
- 分析Hibernate的缓存机制
- Hibernate缓存机制的分析
- 分析Hibernate的缓存机制
- hibrnate内部缓存分析
- 分析Hibernate的缓存机制(转)
- hibernate缓存分析
- Hibernate缓存机制分析
- hibernate缓存机制分析
- Java的Integer内部缓存
- skb_ff
- 几道数值计算题目的c语言实现
- Java_ABC_9.遍历文件夹
- SAP BTE和消息(事件处理)
- struts2.0之struts.xml详解 (续一)
- Hibernate内部缓存的分析:
- vs2005和sql2008的连接问题
- SAFEARRAY使用实例
- [转]HTTP协议学习贴(含PHP实现学习)
- z27
- IO流小结
- 看了半小时的MVC,总结下
- springMVC基础
- PL/SQL开发中动态SQL的使用方法(原文http://dev.yesky.com/187/2029687.shtml)