缓存介绍:
缓存分为:一级缓存,二级缓存和查询缓存
一级缓存:Session 级别的缓存,在同一个SessionFactory工厂,把数据存在Session中。在取数据的时候
只要Session不关闭,我们就可以在缓存中取到内存地址相同的数据。
二级缓存:SessionFactory级别的缓存,在同一个SessionFactory工厂,只要SessionFactiry工厂不关闭,
无论我们建多少Session对象,缓存是一直存在的。我们就可以在缓存中取到内存地址相同的数据,
不过二级缓存需要使用缓存依赖包,并且需要配置二级缓存有关的配置信息。
查询缓存:级缓存需要的东西大致和二级缓存相似,但是和二级缓存没有很大的关系,在三级缓存
中,setCacheable()起到关键作用,目的是使对象具有缓存的功能。
实例展示:
一级缓存:
如果Session关闭那么取到的就不是同一条数据,内存地址变了,说明一级缓存是基于session
的,session关闭,缓存消失
二级缓存:
我们可以看出二级缓存和Session的开关无关,只与SessionFactory有关。当SessionFactory关闭时在执
行时我们会看到两条SQL,说明缓存消失。
查询缓存:
如果关闭二级缓存,默认会开启查询缓存(三级缓存)