一级缓存
1.Hibernate默认开启一级缓存(session)
运行结果:(第一次查询后将数据存入一级缓存【session】------第二次查询先进入session查找有没有数据,有数据直接带回【没有数据才会去数据库拿数据】,所以这里只有出现一条sql语句)
2.清空一级缓存【session】中的数据
运行结果: 第一次查询后,将数据存入一级缓存【session】,但是被手动清空后,【session中没有了数据】,查询操作会再次直接访问数据库,所以出现了两条sql语句
二级缓存
1.下载二级缓存相应jia包(第二个jar包可有可无,被我随机捕获到截图了
2.在根目录(src)下加入缓存配置文件:ehcache.xml,配置缓存管理的对象;
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
/>
</ehcache>
3.在实体配置文件中:xxx.hbm.xml添加开启缓存标签,<cache>:是否缓存该对象;
4.在hibernate.cfg.xml配置缓存的全局数据;
<!-- 二级缓存配置 -->
<!--开启二级缓存 -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<!-- 指定使用哪一个缓存框架 -->
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
<!-- 开启查询缓存 -->
<property name="hibernate.cache.use_query_cache">true</property>
5.测试代码
6.开启缓存前(关闭了一级缓存
开启二级缓存后(在二级缓存中找到了存在感【数据】