在hibernate中的二级缓存中缓存了哪些类

时间:2010-09-15 06:50:41

标签: java hibernate orm second-level-cache

有没有办法让我找出在休眠二级缓存中缓存哪些类(即哪些不同类型的实例)。

1 个答案:

答案 0 :(得分:4)

二级缓存不会缓存实体的实例,它会缓存实体的“脱水”版本。这在blog post

中得到了很好的解释
  

第二级缓存

     

hibernate缓存不存储   实体的实例 - 而不是   Hibernate使用了一些东西   脱水状态。脱水状态   可以被认为是反序列化的   脱水状态的实体   像一个字符串,整数等数组   并且实体的id是   指向脱水实体的指针。   从概念上讲,你可以把它想象成一个   包含id作为键和的映射   数组作为值。或类似的东西   下面是缓存区域:

{ id -> { atribute1, attribute2, attribute3 } }
{ 1 -> { "a name", 20, null } }
{ 2 -> { "another name", 30, 4 } }
     

如果实体持有的集合   其他实体然后是另一个实体   还需要缓存。在这种情况下   它可能看起来像:

{ id -> { atribute1, attribute2, attribute3, Set{item1..n} } }
{ 1 -> { "a name", 20, null, {1,2,5} } }
{ 2 -> { "another name", 30, 4, {4,8} } }

根据您正在使用的L2缓存提供程序,您可能会获得一些控制台来监视/浏览缓存,但是,您仍然不会看到“实例”。

资源