2

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

4

1 回答 1

4

二级缓存不缓存实体实例,它缓存实体的“脱水”版本。这在这篇文中得到了很好的解释:

二级缓存

hibernate 缓存不存储实体的实例 - 相反,Hibernate 使用称为脱水状态的东西。脱水状态可以被认为是一个反序列化的实体,其中脱水状态就像一个字符串、整数等数组,实体的 id 是指向脱水实体的指针。从概念上讲,您可以将其视为包含 id 作为键和数组作为值的 Map。或者类似下面的缓存区域:

{ 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 缓存提供程序,您可能会获得一些控制台来监视/浏览缓存,但您仍然不会看到“实例”。

资源

于 2010-09-15T09:34:53.520 回答