关于Java:休眠中的二级缓存是什么?

What is second level cache in hibernate?

什么是休眠中的二级缓存?


Hibernate具有三种不同的缓存:第一级,第二级和查询缓存。

一级缓存是休眠会话,用于跟踪当前会话(或工作单元)期间实体的状态。这是事务级别的缓存。

第二级缓存在各个会话之间共享实体状态。这是一个SessionFactory级别的缓存。

查询缓存用于缓存查询(及其参数)及其结果。

推荐读物

  • 文档中的二级缓存
  • 休眠:真正了解二级和查询缓存
  • 了解Hibernate中的缓存-第一部分:会话缓存
  • 休眠缓存

一级缓存默认情况下处于启用状态,并且在会话范围内起作用。二级缓存与一级缓存不同,后者可以在会话工厂范围内全局使用。
因此,二级缓存是在会话工厂范围内创建的,并且可用于在使用该特定会话工厂创建的所有会话中使用。
这也意味着,一旦关闭会话工厂,与之关联的所有缓存都将消失,并且缓存管理器也将关闭。
每当休眠会话尝试加载实体时,它首先会在一级缓存中查找实体的缓存副本,如果一级缓存中没有缓存的实体,则在二级缓存中查找缓存的实体。