有没有办法让我找出哪些类(即不同类型的实例)缓存在休眠二级缓存中。
问问题
1389 次
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 回答