Ehcache.put
RegisteredEventListeners.notifyElementPut
cache.update(key, value)
QueryLoader.list // queryTranslator.getQuerySpaces()
factory.getSettings().isQueryCacheEnabled() && queryParameters.isCacheable()
listUsingQueryCache
QueryKey.generateQueryKey sql,parameter,firstRow,maxRow etc
getResultFromQueryCache
StandardQueryCache.get // !isUpToDate(spaces, timestamp)
doList
// session.get also calls the method, the query key is class#id
DefaultLoadEventListener.doLoad
loadFromSessionCache
loadFromSecondLevelCache
loadFromDatasource // call EntityLoader.load
putResultInQueryCache
StandardQueryCache.put // id list
listIgnoreQueryCache
TwoPhaseLoad.initializeEntity // EntityLoader.load also calls it
EntityAccessStrategyAdapter.putFromLoad // entity
SessionImpl.afterTransactionCompletion
// exec includes EntityInsertAction, Delete ... CollectionRemoveAction ...
// update timestamp
session.getFactory().getUpdateTimestampsCache().invalidate(exec.getPropertySpaces());
key: querySpace, propertySpace