Hibernate_二级缓存总结
缓存可以简单的看成一个 Map ,通过 key 在缓存里面找 value 。 一、缓存简介 Cache In Hibernate HIBERNATE 中的 CACHE 有两级 . 一级是在 Session 范围内的 CACHE . 即每个 Session 有自己的一个 CACHE, 当前操作的对象都会被保留在 CACHE 中 . 但是 Session 关闭后这个 CACHE 也就没有 . 可见这级 CACHE 的生命期是很短的 . (使用 id 进行关键字存储:缓存的 key 就是 ID , value 是 POJO ) ( 缓存的是实体对象 ) 另一级 CACHE 是在 SessionFactory 范围的 , 可以被来自同一个 SessionFactory 的 Session 共享 . 在 HIBERNATE 的文档中称其为 SECOND LEVEL CACHE. 显然后者的优势较明显 , 也比较复合当前的使用环境 . 它可以使用不同的缓存实现,如 EhCache 、 JBossCache 、 OsCache 等 (二级缓存是缓存实体对象的) 还有一个类型的 CACHE 就是 QueryCache . 它的作用就是缓存一个 Query 以及 Query 返回对象的 Identifier 以及对象的类型 . 有了 QueryCache 后就可以高效的使用 SECOND LEVEL CACHE. hibernate 查询缓存 (hibernate 默认是关闭的 ) 查询缓存是针对普通属性结果集的缓存 对实体对象的结果集只缓存 id 查询缓存的生命周期,当前关联的表发生修改,那么查询缓存生命周期结束 查询缓存的配置和使用: 1. 启用查询缓存:在 hibernate .cfg.xml 中加入: <property name=”hibernate .cache.use_query_cache”>true</property> 2. 在程序中必须手动启用查询缓存,如: query.setCacheable(true); QueryCache 用来缓存查询语句 , 及查询结果集中对象的 Identifier 与 Type. 当再次使用已缓存的 Query 时 , 就可以通过对象的 Identifier 与 Type 在 SECOND LEVEL CACHE 中查找实际的对象 . 对于查询缓存来说,缓存的 key 是根据 hql 生成的 sql ,再加上参数,分页等信息(可以通过日志输出看到,不过它的输出不是很可读,最好改一下它的代码)。
剩余12页未读,继续阅读
- wangbinhzxs2014-06-05嗯,还是有点收获的
- 粉丝: 11
- 资源: 144
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 235486247769308自带键盘安卓海贼.apk
- 672536945416276wap.stuzn.com_1000_1137350andme_signed.apk
- 737836185360652wap.stuzn.com_1000_1642030hzw_n73d.apk
- JavaWeb阶段综合项目的接口文档
- 003 登录rsa+token 登录rsa+token(需改善 私钥不应该硬编码在类中、密码应该存储为哈希值)
- 992475461755466幼稚园春游功能版.apk
- spark编程基础实验三数据
- windows之mysql8+的配置文件my.ini
- cglib完美支持java17及以上
- PicGo+Typora+Github