一、hibernate内部的缓存的分析
1、 一级缓存Session级别的缓存
将数据放入缓存:Save(),update()….list()、 iterator()
从缓存取数据:get(),load()先去缓存中找对象数据,如果缓存中有对象直接返回该对象,如果缓存中没有该对象,从数据库中找对象
Query接口实现查询(list)不从缓存中提取数据
Criteria:不从存缓存中提取数据
Session.evict(object);//清除一级缓存中指定的对象
Session.clear();//清除一级缓存中的所有对象
一级缓存的缺陷:没有保护,共享范围小
2、 二级缓存SessionFactory
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>:告诉hibernate哪些类对象需要放入缓存
方法一:<class-cache class="com.hbsi.domain.User" usage=""/>
usage:read-only效率最高,但是有一个限制
read-write
nonstrict-read-write
transactional
方法二:在类的映射文件告诉hibernate
<class>
<cache usage="read-only"/>
...
</class>缓存的作用主要来提高性能,可以简单的理解为一个Map;使用
缓存涉及到的三个操作:把