![](/img/trans.png)
[英]Hibernate Second Level Cache - Previously Cached Entities Still being Fetched from DB
[英]Which Classes are Cached in second level cache in 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缓存提供程序,您可能会得到一些控制台来监视/浏览缓存,但是仍然看不到“实例”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.