hibernate之缓存以及pojo对象的三种状态
2016-05-01 17:16
435 查看
一.缓存
1.分类
a) 一级缓存(存放session)可以直接使用
私有的
--当查询时,如果有缓存,先查缓存,如果没有,才查数据库 session.clear(); //清除所有缓存 session.evict(s1); //清空一个缓存
b) 二级缓存(存放sessionFactory)
需要配置才能使用
b1) 复制二级缓存实现类放在lib下 ehcache.jar
b2) 在总的配置文件使用这个实现类(在show_sql)
cache.provider_class=org.hibernate.cache.EhCacheProvider
b3) 哪张表使用二级缓存就在哪个映射文件中配置(如下)
<hibernate-mapping> <class name="com.pojo.Emp" table="emp" catalog="s3839"> <!--在class里,在id前配置下面这条语句 nonstrict-read-write:读写 read-only :只读 --> <cache usage="nonstrict-read-write"/> <id name="empId" type="java.lang.Integer"> <column name="empId" /> <generator class="native" /> </id> </class> </hibernate-mapping>
c) 查询缓存(存放sessionFactory) hql语句使用
c1) 配置好二级缓存(b1步,b2步)
c2) 在总的配置文件中开启查询缓存开关(show_sql)
cache.use_query_cache=true
c3) 哪个语句要使用查询缓存就在哪个query后面.setCacheable(true)
二.pojo对象的三种状态
状态 | 在一级缓存 | 在数据库 | 示例 |
---|---|---|---|
临时(transient) | false | false | new POJO() /session.delete |
持久(persistent) | true | true | session.save/update/get/load/saveOrUpdate/lock |
游离(detached) | false | true | session.clear/evict/close |
三. dao的操作(session操作)
session.save 保存 session.update 修改 session.saveOrUpdate 保存或修改 session.merge 合并(保存或修改) session.delete 删除 session.get 查询 session.load session.clear session.evict session.close session.lock 锁入缓存 session.createQuery
相关文章推荐
- 第二章 链路层
- Block用法解析
- Android Studio使用gradle-experimental构建NDK工程(无需Android.mk、Application.mk文件)
- numpy的100个练习(一)
- LeetCode|Word Pattern
- Session的持久化
- Session的生命周期
- 超级简单的Android Studio jni 实现(无需命令行)
- Java 二叉树的前序、中序、后续遍历 递归和迭代实现
- vsftpd基于pam虚拟用户认证,还怕泄漏账号么?
- 强引用,软引用,弱引用,虚引用
- BZOJ 3670 [Noi2014]动物园
- Java中Filter、Servlet、Listener的学习
- Android图片压缩方法总结
- 使用keepalive+lvs要注意的问题
- 数据库设计三大范式
- storm的安装
- 20145329 《Java程序设计》第九周学习总结
- Codeforces 667C Reberland Linguistics【DFS】
- Codeforces 667C Reberland Linguistics【DFS】