【问题标题】:Which Classes are Cached in second level cache in hibernate哪些类被缓存在休眠的二级缓存中
【发布时间】:2011-04-12 12:47:23
【问题描述】:

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

【问题讨论】:

    标签: java hibernate orm second-level-cache


    【解决方案1】:

    二级缓存不缓存实体的实例,它缓存实体的“脱水”版本。这在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 缓存提供程序,您可能会获得一些控制台来监控/浏览缓存,但您仍然不会看到“实例”。

    资源

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 2010-10-29
      • 2017-07-05
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2019-04-02
      相关资源
      最近更新 更多