【发布时间】:2011-04-12 12:47:23
【问题描述】:
有没有办法让我找出哪些类(即不同类型的实例)缓存在休眠二级缓存中。
【问题讨论】:
标签: java hibernate orm second-level-cache
有没有办法让我找出哪些类(即不同类型的实例)缓存在休眠二级缓存中。
【问题讨论】:
标签: java hibernate orm second-level-cache
二级缓存不缓存实体的实例,它缓存实体的“脱水”版本。这在blog post中有很好的解释:
二级缓存
休眠缓存不存储 实体的实例 - 相反 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 缓存提供程序,您可能会获得一些控制台来监控/浏览缓存,但您仍然不会看到“实例”。
【讨论】: