Hibernate缓存清除
2011-03-07 10:17
246 查看
一、Hibernate
一级缓存
(1
)
hibernate
支持两个级别的缓存,默认只支持一级缓存;
(2
)每个
Session
内部自带一个一级缓存;
(3
)某个
Session
被关闭时,其对应的一级缓存自动清除;
(4
)
save
、
update
、
saveOrupdate
、
load
、
get
、
list
、
iterate
、
lock
方法都会向缓存中存
对象.
(5
)可以从缓存中读数据的只有:
get
、
load
、
iterate
(6
)
Query
对象默认情况下不读缓存,如果要使其支持缓存,则要通过语法:
query.setCacheable(true);
<property name="cache.use_query_cache">true</property>
(7
)打开
query
缓存后,只有查询条件与以前的查询完全相同时,才会在缓存中匹配
成功.
(8
)
Criteria
对缓存支持不足;
(8
)
Criteria
对缓存支持不足;
(9
)一级缓存不能控制缓存中的对象数量,要注意大批量操作数据时可能造成的内存
溢出,可以利用清除缓存.
二、hibernate
二级缓存
* save、
update
、
saveOrupdate
、
load
、
get
、
list
、
query
、
Criteria
方法都会填充二级缓存
* get、
load
、
iterate
会从二级缓存中取数据
*session.save(user) 如果
user
主键使用
“native”
生成,则不放入二级缓存
(1)开启二级缓存
<property name="cache.use_second_level_cache">true</property>
(2)为
hibernate
指定二级缓存的实现类
<property name="cache.provider_class">
</property>
(3)为
OSCache
缓存创建配置文件
(
需要
hibernate_Advance_Surpport_lib)
修改配置中的:
(4)指明哪些类需要放入二级缓存,需要长期使用到的对象才有必要放入二级缓存
<class-cache class="entity.PetInfo" usage ="read-only" />//不允许更新缓存中的对象
<class-cache class="entity.PetInfo" usage ="read-write"/>//允许更改缓存中的对象
活在orm
文件中:
<class name="entity.PetInfo" table="PetInfo" schema="dbo" catalog="epet">
<cache usage="read-only"/>
...
</class>
(5)如果需要清除二级缓存,使用下面语法
sessionFactory.evict(User.class)
//
清除所有user
sessionFactory.evict(User.class,Id)
//
清除指定user
一级缓存
(1
)
hibernate
支持两个级别的缓存,默认只支持一级缓存;
(2
)每个
Session
内部自带一个一级缓存;
(3
)某个
Session
被关闭时,其对应的一级缓存自动清除;
(4
)
save
、
update
、
saveOrupdate
、
load
、
get
、
list
、
iterate
、
lock
方法都会向缓存中存
对象.
(5
)可以从缓存中读数据的只有:
get
、
load
、
iterate
(6
)
Query
对象默认情况下不读缓存,如果要使其支持缓存,则要通过语法:
query.setCacheable(true);
<property name="cache.use_query_cache">true</property>
(7
)打开
query
缓存后,只有查询条件与以前的查询完全相同时,才会在缓存中匹配
成功.
(8
)
Criteria
对缓存支持不足;
(8
)
Criteria
对缓存支持不足;
(9
)一级缓存不能控制缓存中的对象数量,要注意大批量操作数据时可能造成的内存
溢出,可以利用清除缓存.
二、hibernate
二级缓存
* save、
update
、
saveOrupdate
、
load
、
get
、
list
、
query
、
Criteria
方法都会填充二级缓存
* get、
load
、
iterate
会从二级缓存中取数据
*session.save(user) 如果
user
主键使用
“native”
生成,则不放入二级缓存
(1)开启二级缓存
<property name="cache.use_second_level_cache">true</property>
(2)为
hibernate
指定二级缓存的实现类
<property name="cache.provider_class">
</property>
(3)为
OSCache
缓存创建配置文件
(
需要
hibernate_Advance_Surpport_lib)
修改配置中的:
(4)指明哪些类需要放入二级缓存,需要长期使用到的对象才有必要放入二级缓存
<class-cache class="entity.PetInfo" usage ="read-only" />//不允许更新缓存中的对象
<class-cache class="entity.PetInfo" usage ="read-write"/>//允许更改缓存中的对象
活在orm
文件中:
<class name="entity.PetInfo" table="PetInfo" schema="dbo" catalog="epet">
<cache usage="read-only"/>
...
</class>
(5)如果需要清除二级缓存,使用下面语法
sessionFactory.evict(User.class)
//
清除所有user
sessionFactory.evict(User.class,Id)
//
清除指定user
相关文章推荐
- hibernate缓存清除(转)
- $.getJson方法清除缓存
- 一个清除Xcode项目占用大量空间的脚本
- android EditText监听与判断是否清除
- sql解封代码(有后门,自行清除)
- 网站后门的检测与清除
- 清除Windows访问共享时保存的凭据记录
- linux下 squid 手动清除缓存
- [Object-c]获取文件的大小 清除缓存
- css浮动与清除
- CSS清除浮动的简单方法
- Web前端从入门到精通-8 css简介——清除浮动
- docker 不同引擎导致历史垃圾镜像无法自动清除,致硬盘空间报警
- 细微之处:比较两种CSS清除浮动的兼容
- android 清除程序中的多余资源
- Office 2010 word/excel 最近所用文档记录的清除
- android 中怎样能够清除activity堆栈,也就是退出整个应用
- 简单登陆页面的创建(页面跳转.键盘回收.实现换行.清除textField中的文字)
- 关于避免部署在eclipse和tomcat下的项目下保存的图片随着下次重新部署导致图片文件夹被清除的问题
- sql2005 清除日志