Hibernate的二级缓存

前言

缓存:把数据存起来重复使用。


如何提高Hibernate效率?

1、join fetch 来进行即时填充,避免n+1次查询。
2、尽量使用批处理增删改。
3、对比较稳定的数据进行有效利用二级缓存,减少数据库的查询。


Hibernate:
        一级缓存:session的开和关之间。
        二级缓存:一直存在,全局的sessionFactory相同的生命周期。





实战

导入jar包,如有重复就留高版本去低版本。
在这里插入图片描述
在这里插入图片描述





配置Hibernate的二级缓存的开关,现在把它打开。

<!-- 二级缓存总开关 -->
				<prop key="hibernate.cache.use_second_level_cache">true</prop>  
				<!-- 开启查询缓存--> 
				<prop key="hibernate.cache.use_query_cache">true</prop>  
				<!-- 设置二级缓存插件EHCache的Provider类-->  
				<prop key="hibernate.cache.provider_class">  
					 org.hibernate.cache.EhCacheProvider
				</prop> 
				<prop key="hibernate.cache.region.factory_class">  
					 org.hibernate.cache.ehcache.EhCacheRegionFactory
				</prop>

在这里插入图片描述






编写二级缓存的配置
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>  
<ehcache>  
	  <!--如果缓存中的对象存储超过指定的缓存数量的对象存储的磁盘地址-->  
	  <diskStore path="D:/ehcache"/>  
	  
	  <!-- 默认cache:如果没有对应的特定区域的缓存,就使用默认缓存 -->  
	  <defaultCache maxElementsInMemory="10000"  
	                eternal="false"  
	                timeToIdleSeconds="300"   
	                timeToLiveSeconds="600"  
	                overflowToDisk="false"/>  
	                
	  <!-- 指定区域cache:通过name指定,name对应到Hibernate中的区域名即可-->  
	  <cache name="com.bdqn.it.entity.GoodType"  
	                eternal="true"  
	                maxElementsInMemory="1000"  
	                timeToIdleSeconds="3600"  
	                timeToLiveSeconds="21600"  
	                overflowToDisk="true">  
	  </cache> 
</ehcache>  






继续配置
在这里插入图片描述




这里的话,请设置到你们的方法中即可,小白这里的是父方法。各位可以在自己查询的方法里加即可。
在这里插入图片描述
在这里插入图片描述




本小白运行项目,点击某个功能第一次出现了查询语句。此时它已经被存储到二级缓存中。
在这里插入图片描述





这是第二次运行并点击功能发现已经没查询的SQL语句了说明这是从二级缓存取的数据。
在这里插入图片描述如有不足,请多多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值