hibernate缓存:一级缓存,二级缓存(https://mp.csdn.net/mdeditor)
1.一级缓存:即session级别的缓存,亦即事务级别的缓存策略,这种缓存策略是Hibernate内置的,不可被拆卸的
2.二级缓存:即SessionFactory的外置缓存,其同时也称为进程级缓存或集群范围内的缓存。
hibernate的二级缓存是需要第三方支持的,hibernate默认的二级缓存插件为ehcache,由于二级缓存是进程级的可 能出现多线程并发问题,需要设置缓存的并发策略。
(hibernate二级缓存多应用在多读少写的实体对象中!)
使用hibernate注解方式使用二级缓存开发步骤
1、在src文件夹下添加ehcache.xml配置文件 ;
2.hibernate配置文件中,配置Ehcache相关属性(如果与spring整合,直接在spring的配置文件applicationContext.xml中添加)
<!-- 使用二级缓存:false -->
hibernate.cache.use_second_level_cache=true
<!-- 启动查询缓存:false -->
hibernate.cache.use_query_cache=true
<!-- 二级缓存插件:org.hibernate.cache.EhCacheProvider -->
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
<!-- 是否收集有助于性能调节的统计数据:true -->
hibernate.generate_statistics=true
3.引入相应jar包(如果还在手动添加jar包的,可以尝试使用maven)
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>3.6.9.Final</version>
</dependency>
( 这样就引入了hibernate-ehcache-3.6.9.jar及其依赖包ehcache-core-2.4.3.jar)
4.注解方式配置实体, 在实体上配置@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 并指定缓存 并发策略。
4.1:ehcache的四种缓存并发策略如下
(1)read-write(读写型):更新缓存的时候会锁定缓存中的数据
(2)nonstrict-read-write(非严格读写型):不锁定缓存中的数据
(3)read-only(只读型):适用从来不会被修改的数据(如参考数据)
(4)transactional:提供对全事务缓存机制的支持,比如JBoss TreeCache
扩展:java-web 常见的缓冲技术,使用缓存技术:对程序进行优化.
- 缓存:其实就是内存中的一块空间.可以使用缓存将数据源中的数据拿到,存入到内存中.后期获得数据的话 从缓存中进行获得.
减少与数据库的交互次数! - 常见缓存有以下几种常用
(1)EHCache :是Hibernate常使用的二级缓存的插件.Ehcache – Java分布式缓存框架
(2)Redis: