hibernate缓存,包括一级缓存、二级缓存和查询缓存。
其中,一级缓存的生命周期随着session的生命周期。在session 接口实现类org.hibernate.internal.SessionImpl中,persistenceContext 属性中保存着一级缓存;
private transient StatefulPersistenceContext persistenceContext //属性保存着一级缓存对象
org.hibernate.engine.internal.StatefulPersistenceContext类中,一级缓存指的就是entitiesByKey属性;如下图:
public class StatefulPersistenceContext implements PersistenceContext {
private static final CoreMessageLogger LOG = Logger.getMessageLogger(
CoreMessageLogger.class,
StatefulPersistenceContext.class.getName()
);
private static final boolean TRACE_ENABLED = LOG.isTraceEnabled();
private static final int INIT_COLL_SIZE = 8;
private SessionImplementor session;
// Loaded entity instances, by EntityKey
privat