0%

MYSQL9—延迟加载,一级缓存,二级缓存

1
2
3
4
5
<settings>
<setting name=“cacheEnabled” value=“true”/>
<setting name=“lazyLoadingEnabled” value=“true”/>
<setting name=“aggressiveLazyLoading“ value=“true”/>
</settings>

一级缓存与二级缓存的不同:
sqlsession一旦关闭,则sqlsession中的数据将不存在,就是一级缓存不存在的。而二级缓存的生命周期会与整个应用同步,与sqlsession是否关闭无关。
一级缓存在同意线程间共享数据,而二级缓存是在不同线程间共享数据。
一级缓存就是select查出来数据,他是根据namespace和id一起确定缓存的,而hibernate就是根据id来查的,增删改清空缓存。
二级缓存:

1
<cache eviction = FIFOflushInterval =”1080000″ readOnly =”true” size=”512″>
  1. LRU – 最近最少使用的:移除最长时间不被使用的对象。

  2. FIFO – 先进先出:按对象进入缓存的顺序来移除它们。

flushInterval :刷新缓存的时间间隔,一般是毫秒。

readOnle:是否只读

size:二级缓存的数量