对Hebernate缓存的理解
来源:互联网 发布:安阳淘宝培训班 编辑:程序博客网 时间:2024/05/22 14:52
Hibernate的缓存目前比较常见的使用是它的:一级缓存(Session缓存),二级缓存(第三方插件缓存)。
缓存:
缓存就是把当前查询出来或是使用过的对象保存到内存中(一个数据结构当中),这个数据结构通常是或类似于hashMap,当以后要使用某个对象时, 会先到缓存中去找有没有这个对象,如果有就使用缓存中的,如果没有就 到数据中去查询,并将查询出来的数据保存到缓存中,方便下次使用。即使用缓存会涉及到三个方面:把数据放入缓存,从缓存中读取缓存,删除无用的缓存。
一级缓存:
Hibernate的session是一种缓存,通常被称为hibernate的一级缓存。用session查询数据时,首先会从session内部去找有没有,有就使用session中的,没有就到数据库中去查,并将查到的结果放到session中,方便下次使用。由于session代表一次会话,与一个数据库连接相关联,所以session最好不要长时间保持打开,通常仅用于一个事务当中,事务关闭的时候就应该结束。另外,session是线程不安全的,当多线程共享使用时会出现问题。通常只有那种全局意义的缓存才是真正的缓存应用,才有大的缓存使用价值。二级缓存就能达到这个使用价值。Session级共享的: save, update, saveorupdate, list, get, load, iterate, lock这些方法都会放在一级缓存中。Session缓存的另一个缺点是不能控制缓存的数量,当大批量数据操作时会造成数据的溢出。但可以用evict, clear去清除缓存。
二级缓存:
它是独立于hibernate的一个软件部件,属于第三方产品,常用的第三方缓存产品有:EhCache, OsCache, TreeCache,SwarmCache。可以通过对org.hibernate.cache.EhCacheProvider和Cache接口来实现。二级缓存的配置: 首先,开启缓存,确定使用哪个产家的第三方产品,配置该缓存自己的配置文件,然后要配置hibernate中那些对象需要纳入二级缓存中,这就是这的配置思路。另处需要注意的是,一个二级缓存只能负责缓存一个数据库中的数据,否则就会造成与实际数据不相符。
- 对Hebernate缓存的理解
- 对缓存的理解
- 对Hibernate缓存的理解
- 对缓存机制的理解
- 对“缓存”的全面理解和优化
- 对“缓存”的全面理解和优化
- 对模板缓存的一些个人理解
- 对缓存的理解,设计,与测试
- Android开发对网络缓存的理解
- 对缓存技术(redis)的理解
- hebernate对表格反向生成时生成两个类文件的解决方法
- 我对MyBatis的缓存机制的理解
- 对带缓存区的标准IO的理解
- 个人对一级缓存,二级缓存的初步理解
- 说说自己对hibernate一级、二级、查询、缓存的理解。
- hibernate 的缓存理解
- Hibernate缓存的理解
- 缓存的一些理解
- 引:COM线程模型详解
- 2011年度中国互联网红黑榜TOP10
- 简单基站定位程序
- tinyXML 学习笔记1
- sql 中 replace 的用法
- 对Hebernate缓存的理解
- s3c2440启动过程详解
- 常用嵌入式数据库
- js 本地预览
- Specified VM install not found 缺少JRE什么的
- Android应用界面增加退出提示框
- 如何刷新本地dns,查看本机DNS服务器的方法
- org.apache.catalina.core.StandardWrapperValve invoke错误
- IE6 布局