Hibernate提供了三种不同的缓存:一级缓存、二级缓存和查询缓存。
一级缓存 是Hibernate Session中使用的,用于跟踪当前Session(或工作单元)中实体的状态。这是一个事务级别的缓存。
二级缓存 可以在不同的Session之间共享实体状态。这是一个SessionFactory级别的缓存。
查询缓存 用于缓存查询(及其参数)及其结果。
默认情况下启用一级缓存,工作在会话范围内。二级缓存是除了一级缓存之外的另一个缓存,适用于全局会话工厂范围内。 因此,二级缓存在会话工厂范围内创建,并可用于使用该特定会话工厂创建的所有会话。 这也意味着一旦会话工厂关闭,与其关联的所有缓存都将失效,缓存管理器也将关闭。 每当 Hibernate 会话尝试加载实体时,它首先在一级缓存中查找实体的缓存副本,如果在一级缓存中没有缓存的实体,则会查找二级缓存中的缓存实体。