有没有办法让我找出在休眠二级缓存中缓存哪些类(即哪些不同类型的实例)。
答案 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缓存提供程序,您可能会获得一些控制台来监视/浏览缓存,但是,您仍然不会看到“实例”。